2# pragma GCC system_header
4#define ALWAYS_INLINE(x) __attribute__ ((__always_inline__)) x
5typedef __builtin_va_list __gnuc_va_list;
6typedef __gnuc_va_list va_list;
8typedef long unsigned int size_t;
9typedef unsigned char __u_char;
10typedef unsigned short int __u_short;
11typedef unsigned int __u_int;
12typedef unsigned long int __u_long;
13typedef signed char __int8_t;
14typedef unsigned char __uint8_t;
15typedef signed short int __int16_t;
16typedef unsigned short int __uint16_t;
17typedef signed int __int32_t;
18typedef unsigned int __uint32_t;
19typedef signed long int __int64_t;
20typedef unsigned long int __uint64_t;
21typedef __int8_t __int_least8_t;
22typedef __uint8_t __uint_least8_t;
23typedef __int16_t __int_least16_t;
24typedef __uint16_t __uint_least16_t;
25typedef __int32_t __int_least32_t;
26typedef __uint32_t __uint_least32_t;
27typedef __int64_t __int_least64_t;
28typedef __uint64_t __uint_least64_t;
29typedef long int __quad_t;
30typedef unsigned long int __u_quad_t;
31typedef long int __intmax_t;
32typedef unsigned long int __uintmax_t;
33typedef unsigned long int __dev_t;
34typedef unsigned int __uid_t;
35typedef unsigned int __gid_t;
36typedef unsigned long int __ino_t;
37typedef unsigned long int __ino64_t;
38typedef unsigned int __mode_t;
39typedef unsigned long int __nlink_t;
40typedef long int __off_t;
41typedef long int __off64_t;
43typedef struct {
int __val[2]; }
__fsid_t;
44typedef long int __clock_t;
45typedef unsigned long int __rlim_t;
46typedef unsigned long int __rlim64_t;
47typedef unsigned int __id_t;
48typedef long int __time_t;
49typedef unsigned int __useconds_t;
50typedef long int __suseconds_t;
51typedef long int __suseconds64_t;
54typedef int __clockid_t;
55typedef void * __timer_t;
56typedef long int __blksize_t;
57typedef long int __blkcnt_t;
58typedef long int __blkcnt64_t;
59typedef unsigned long int __fsblkcnt_t;
60typedef unsigned long int __fsblkcnt64_t;
61typedef unsigned long int __fsfilcnt_t;
62typedef unsigned long int __fsfilcnt64_t;
63typedef long int __fsword_t;
64typedef long int __ssize_t;
65typedef long int __syscall_slong_t;
66typedef unsigned long int __syscall_ulong_t;
67typedef __off64_t __loff_t;
68typedef char *__caddr_t;
69typedef long int __intptr_t;
70typedef unsigned int __socklen_t;
71typedef int __sig_atomic_t;
99typedef void _IO_lock_t;
106 char *_IO_write_base;
112 char *_IO_backup_base;
114 struct _IO_marker *_markers;
119 unsigned short _cur_column;
120 signed char _vtable_offset;
124 struct _IO_codecvt *_codecvt;
125 struct _IO_wide_data *_wide_data;
130 char _unused2[15 *
sizeof (int) - 4 *
sizeof (
void *) -
sizeof (size_t)];
132typedef __ssize_t cookie_read_function_t (
void *__cookie,
char *__buf,
134typedef __ssize_t cookie_write_function_t (
void *__cookie,
const char *__buf,
136typedef int cookie_seek_function_t (
void *__cookie, __off64_t *__pos,
int __w);
137typedef int cookie_close_function_t (
void *__cookie);
140 cookie_read_function_t *read;
141 cookie_write_function_t *write;
142 cookie_seek_function_t *seek;
143 cookie_close_function_t *close;
145typedef __off_t off_t;
146typedef __off64_t off64_t;
147typedef __ssize_t ssize_t;
153extern int remove (
const char *__filename) __attribute__ ((__nothrow__ , __leaf__));
154extern int rename (
const char *__old,
const char *__new) __attribute__ ((__nothrow__ , __leaf__));
155extern int renameat (
int __oldfd,
const char *__old,
int __newfd,
156 const char *__new) __attribute__ ((__nothrow__ , __leaf__));
157extern int renameat2 (
int __oldfd,
const char *__old,
int __newfd,
158 const char *__new,
unsigned int __flags) __attribute__ ((__nothrow__ , __leaf__));
159extern int fclose (
FILE *__stream);
160extern FILE *tmpfile (
void)
161 __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__));
162extern
FILE *tmpfile64 (
void)
163 __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__));
164extern
char *tmpnam (
char[20]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
165extern
char *tmpnam_r (
char __s[20]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
166extern
char *tempnam (const
char *__dir, const
char *__pfx)
167 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__malloc__ (__builtin_free, 1)));
168extern
int fflush (
FILE *__stream);
169extern
int fflush_unlocked (
FILE *__stream);
170extern
int fcloseall (
void);
171extern
FILE *fopen (const
char *__restrict __filename,
172 const
char *__restrict __modes)
173 __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__));
174extern
FILE *freopen (const
char *__restrict __filename,
175 const
char *__restrict __modes,
176 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
177extern
FILE *fopen64 (const
char *__restrict __filename,
178 const
char *__restrict __modes)
179 __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__));
180extern
FILE *freopen64 (const
char *__restrict __filename,
181 const
char *__restrict __modes,
182 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
183extern
FILE *fdopen (
int __fd, const
char *__modes) __attribute__ ((__nothrow__ , __leaf__))
184 __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__));
185extern
FILE *fopencookie (
void *__restrict __magic_cookie,
186 const
char *__restrict __modes,
188 __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__));
189extern
FILE *fmemopen (
void *__s,
size_t __len, const
char *__modes)
190 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__));
191extern
FILE *open_memstream (
char **__bufloc,
size_t *__sizeloc) __attribute__ ((__nothrow__ , __leaf__))
192 __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (fclose, 1))) __attribute__ ((__warn_unused_result__));
193extern
void setbuf (
FILE *__restrict __stream,
char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));
194extern
int setvbuf (
FILE *__restrict __stream,
char *__restrict __buf,
195 int __modes,
size_t __n) __attribute__ ((__nothrow__ , __leaf__));
196extern
void setbuffer (
FILE *__restrict __stream,
char *__restrict __buf,
197 size_t __size) __attribute__ ((__nothrow__ , __leaf__));
198extern
void setlinebuf (
FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
199extern
int fprintf (
FILE *__restrict __stream,
200 const
char *__restrict __format, ...);
201extern
int printf (const
char *__restrict __format, ...);
202extern
int sprintf (
char *__restrict __s,
203 const
char *__restrict __format, ...) __attribute__ ((__nothrow__));
204extern
int vfprintf (
FILE *__restrict __s, const
char *__restrict __format,
205 __gnuc_va_list __arg);
206extern
int vprintf (const
char *__restrict __format, __gnuc_va_list __arg);
207extern
int vsprintf (
char *__restrict __s, const
char *__restrict __format,
208 __gnuc_va_list __arg) __attribute__ ((__nothrow__));
209extern
int snprintf (
char *__restrict __s,
size_t __maxlen,
210 const
char *__restrict __format, ...)
211 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
212extern
int vsnprintf (
char *__restrict __s,
size_t __maxlen,
213 const
char *__restrict __format, __gnuc_va_list __arg)
214 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
215extern
int vasprintf (
char **__restrict __ptr, const
char *__restrict __f,
216 __gnuc_va_list __arg)
217 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__));
218extern
int __asprintf (
char **__restrict __ptr,
219 const
char *__restrict __fmt, ...)
220 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__));
221extern
int asprintf (
char **__restrict __ptr,
222 const
char *__restrict __fmt, ...)
223 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__));
224extern
int vdprintf (
int __fd, const
char *__restrict __fmt,
225 __gnuc_va_list __arg)
226 __attribute__ ((__format__ (__printf__, 2, 0)));
227extern
int dprintf (
int __fd, const
char *__restrict __fmt, ...)
228 __attribute__ ((__format__ (__printf__, 2, 3)));
229extern
int fscanf (
FILE *__restrict __stream,
230 const
char *__restrict __format, ...) __attribute__ ((__warn_unused_result__));
231extern
int scanf (const
char *__restrict __format, ...) __attribute__ ((__warn_unused_result__));
232extern
int sscanf (const
char *__restrict __s,
233 const
char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__));
234extern
int fscanf (
FILE *__restrict __stream, const
char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf") __attribute__ ((__warn_unused_result__));
235extern
int scanf (const
char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf") __attribute__ ((__warn_unused_result__));
236extern
int sscanf (const
char *__restrict __s, const
char *__restrict __format, ...) __asm__ ("" "__isoc99_sscanf") __attribute__ ((__nothrow__ , __leaf__));
237extern
int vfscanf (
FILE *__restrict __s, const
char *__restrict __format,
238 __gnuc_va_list __arg)
239 __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__));
240extern
int vscanf (const
char *__restrict __format, __gnuc_va_list __arg)
241 __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__));
242extern
int vsscanf (const
char *__restrict __s,
243 const
char *__restrict __format, __gnuc_va_list __arg)
244 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
245extern
int vfscanf (
FILE *__restrict __s, const
char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf")
246 __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__));
247extern
int vscanf (const
char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf")
248 __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__));
249extern
int vsscanf (const
char *__restrict __s, const
char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vsscanf") __attribute__ ((__nothrow__ , __leaf__))
250 __attribute__ ((__format__ (__scanf__, 2, 0)));
251extern
int fgetc (
FILE *__stream);
252extern
int getc (
FILE *__stream);
253extern
int getchar (
void);
254extern
int getc_unlocked (
FILE *__stream);
255extern
int getchar_unlocked (
void);
256extern
int fgetc_unlocked (
FILE *__stream);
257extern
int fputc (
int __c,
FILE *__stream);
258extern
int putc (
int __c,
FILE *__stream);
259extern
int putchar (
int __c);
260extern
int fputc_unlocked (
int __c,
FILE *__stream);
261extern
int putc_unlocked (
int __c,
FILE *__stream);
262extern
int putchar_unlocked (
int __c);
263extern
int getw (
FILE *__stream);
264extern
int putw (
int __w,
FILE *__stream);
265extern
char *fgets (
char *__restrict __s,
int __n,
FILE *__restrict __stream)
266 __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2)));
267extern
char *fgets_unlocked (
char *__restrict __s,
int __n,
268 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__))
269 __attribute__ ((__access__ (__write_only__, 1, 2)));
270extern __ssize_t __getdelim (
char **__restrict __lineptr,
271 size_t *__restrict __n,
int __delimiter,
272 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
273extern __ssize_t getdelim (
char **__restrict __lineptr,
274 size_t *__restrict __n,
int __delimiter,
275 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
276extern __ssize_t getline (
char **__restrict __lineptr,
277 size_t *__restrict __n,
278 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
279extern
int fputs (const
char *__restrict __s,
FILE *__restrict __stream);
280extern
int puts (const
char *__s);
281extern
int ungetc (
int __c,
FILE *__stream);
282extern
size_t fread (
void *__restrict __ptr,
size_t __size,
283 size_t __n,
FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
284extern
size_t fwrite (const
void *__restrict __ptr,
size_t __size,
285 size_t __n,
FILE *__restrict __s);
286extern
int fputs_unlocked (const
char *__restrict __s,
287 FILE *__restrict __stream);
288extern
size_t fread_unlocked (
void *__restrict __ptr,
size_t __size,
289 size_t __n,
FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
290extern
size_t fwrite_unlocked (const
void *__restrict __ptr,
size_t __size,
291 size_t __n,
FILE *__restrict __stream);
292extern
int fseek (
FILE *__stream,
long int __off,
int __whence);
293extern
long int ftell (
FILE *__stream) __attribute__ ((__warn_unused_result__));
294extern
void rewind (
FILE *__stream);
295extern
int fseeko (
FILE *__stream, __off_t __off,
int __whence);
296extern __off_t ftello (
FILE *__stream) __attribute__ ((__warn_unused_result__));
297extern
int fgetpos (
FILE *__restrict __stream,
fpos_t *__restrict __pos);
298extern
int fsetpos (
FILE *__stream, const
fpos_t *__pos);
299extern
int fseeko64 (
FILE *__stream, __off64_t __off,
int __whence);
300extern __off64_t ftello64 (
FILE *__stream) __attribute__ ((__warn_unused_result__));
301extern
int fgetpos64 (
FILE *__restrict __stream,
fpos64_t *__restrict __pos);
302extern
int fsetpos64 (
FILE *__stream, const
fpos64_t *__pos);
303extern
void clearerr (
FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
304extern
int feof (
FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
305extern
int ferror (
FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
306extern
void clearerr_unlocked (
FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
307extern
int feof_unlocked (
FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
308extern
int ferror_unlocked (
FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
309extern
void perror (const
char *__s);
310extern
int fileno (
FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
311extern
int fileno_unlocked (
FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
312extern
int pclose (
FILE *__stream);
313extern
FILE *popen (const
char *__command, const
char *__modes)
314 __attribute__ ((__malloc__)) __attribute__ ((__malloc__ (pclose, 1))) __attribute__ ((__warn_unused_result__));
315extern
char *ctermid (
char *__s) __attribute__ ((__nothrow__ , __leaf__))
316 __attribute__ ((__access__ (__write_only__, 1)));
317extern
char *cuserid (
char *__s)
318 __attribute__ ((__access__ (__write_only__, 1)));
320extern
int obstack_printf (struct obstack *__restrict __obstack,
321 const
char *__restrict __format, ...)
322 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
323extern
int obstack_vprintf (struct obstack *__restrict __obstack,
324 const
char *__restrict __format,
325 __gnuc_va_list __args)
326 __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));
327extern
void flockfile (
FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
328extern
int ftrylockfile (
FILE *__stream) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
329extern
void funlockfile (
FILE *__stream) __attribute__ ((__nothrow__ , __leaf__));
330extern
int __uflow (
FILE *);
331extern
int __overflow (
FILE *,
int);
332extern __inline __attribute__ ((__gnu_inline__))
int
337extern __inline __attribute__ ((__gnu_inline__))
int
338fgetc_unlocked (
FILE *__fp)
340 return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(
unsigned char *) (__fp)->_IO_read_ptr++);
342extern __inline __attribute__ ((__gnu_inline__))
int
343getc_unlocked (
FILE *__fp)
345 return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(
unsigned char *) (__fp)->_IO_read_ptr++);
347extern __inline __attribute__ ((__gnu_inline__))
int
348getchar_unlocked (
void)
350 return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(
unsigned char *) (stdin)->_IO_read_ptr++);
352extern __inline __attribute__ ((__gnu_inline__))
int
355 return putc (__c, stdout);
357extern __inline __attribute__ ((__gnu_inline__))
int
358fputc_unlocked (
int __c,
FILE *__stream)
360 return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (
unsigned char) (__c)) : (
unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
362extern __inline __attribute__ ((__gnu_inline__))
int
363putc_unlocked (
int __c,
FILE *__stream)
365 return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (
unsigned char) (__c)) : (
unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
367extern __inline __attribute__ ((__gnu_inline__))
int
368putchar_unlocked (
int __c)
370 return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (
unsigned char) (__c)) : (
unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
372extern __inline __attribute__ ((__gnu_inline__)) __ssize_t
373getline (
char **__lineptr,
size_t *__n,
FILE *__stream)
375 return __getdelim (__lineptr, __n,
'\n', __stream);
377extern __inline __attribute__ ((__gnu_inline__))
int
378__attribute__ ((__nothrow__ , __leaf__)) feof_unlocked (
FILE *__stream)
380 return (((__stream)->_flags & 0x0010) != 0);
382extern __inline __attribute__ ((__gnu_inline__))
int
383__attribute__ ((__nothrow__ , __leaf__)) ferror_unlocked (
FILE *__stream)
385 return (((__stream)->_flags & 0x0020) != 0);
387extern int __sprintf_chk (
char *__restrict __s,
int __flag,
size_t __slen,
388 const char *__restrict __format, ...) __attribute__ ((__nothrow__ , __leaf__))
389 __attribute__ ((__access__ (__write_only__, 1, 3)));
390extern
int __vsprintf_chk (
char *__restrict __s,
int __flag,
size_t __slen,
391 const
char *__restrict __format,
392 __gnuc_va_list __ap) __attribute__ ((__nothrow__ , __leaf__))
393 __attribute__ ((__access__ (__write_only__, 1, 3)));
394extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
395__attribute__ ((__nothrow__ , __leaf__)) sprintf (
char *__restrict __s, const
char *__restrict __fmt, ...)
397 return __builtin___sprintf_chk (__s, 2 - 1,
398 __builtin_object_size (__s, 2 > 1), __fmt,
399 __builtin_va_arg_pack ());
401extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
402__attribute__ ((__nothrow__ , __leaf__)) vsprintf (
char *__restrict __s,
const char *__restrict __fmt, __gnuc_va_list __ap)
404 return __builtin___vsprintf_chk (__s, 2 - 1,
405 __builtin_object_size (__s, 2 > 1), __fmt, __ap);
407extern int __snprintf_chk (
char *__restrict __s,
size_t __n,
int __flag,
408 size_t __slen,
const char *__restrict __format,
409 ...) __attribute__ ((__nothrow__ , __leaf__))
410 __attribute__ ((__access__ (__write_only__, 1, 2)));
411extern
int __vsnprintf_chk (
char *__restrict __s,
size_t __n,
int __flag,
412 size_t __slen, const
char *__restrict __format,
413 __gnuc_va_list __ap) __attribute__ ((__nothrow__ , __leaf__));
414extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
415__attribute__ ((__nothrow__ , __leaf__)) snprintf (
char *__restrict __s,
size_t __n, const
char *__restrict __fmt, ...)
417 return __builtin___snprintf_chk (__s, __n, 2 - 1,
418 __builtin_object_size (__s, 2 > 1), __fmt,
419 __builtin_va_arg_pack ());
421extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
422__attribute__ ((__nothrow__ , __leaf__)) vsnprintf (
char *__restrict __s,
size_t __n,
const char *__restrict __fmt, __gnuc_va_list __ap)
424 return __builtin___vsnprintf_chk (__s, __n, 2 - 1,
425 __builtin_object_size (__s, 2 > 1), __fmt, __ap);
427extern int __fprintf_chk (
FILE *__restrict __stream,
int __flag,
428 const char *__restrict __format, ...);
429extern int __printf_chk (
int __flag,
const char *__restrict __format, ...);
430extern int __vfprintf_chk (
FILE *__restrict __stream,
int __flag,
431 const char *__restrict __format, __gnuc_va_list __ap);
432extern int __vprintf_chk (
int __flag,
const char *__restrict __format,
433 __gnuc_va_list __ap);
434extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
435fprintf (
FILE *__restrict __stream,
const char *__restrict __fmt, ...)
437 return __fprintf_chk (__stream, 2 - 1, __fmt,
438 __builtin_va_arg_pack ());
440extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
441printf (
const char *__restrict __fmt, ...)
443 return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ());
445extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
446vprintf (
const char *__restrict __fmt, __gnuc_va_list __ap)
448 return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap);
450extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
451vfprintf (
FILE *__restrict __stream,
452 const char *__restrict __fmt, __gnuc_va_list __ap)
454 return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap);
456extern int __dprintf_chk (
int __fd,
int __flag,
const char *__restrict __fmt,
457 ...) __attribute__ ((__format__ (__printf__, 3, 4)));
458extern
int __vdprintf_chk (
int __fd,
int __flag,
459 const
char *__restrict __fmt, __gnuc_va_list __arg)
460 __attribute__ ((__format__ (__printf__, 3, 0)));
461extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
462dprintf (
int __fd, const
char *__restrict __fmt, ...)
464 return __dprintf_chk (__fd, 2 - 1, __fmt,
465 __builtin_va_arg_pack ());
467extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
468vdprintf (
int __fd,
const char *__restrict __fmt, __gnuc_va_list __ap)
470 return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap);
472extern int __asprintf_chk (
char **__restrict __ptr,
int __flag,
473 const char *__restrict __fmt, ...)
474 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__));
475extern
int __vasprintf_chk (
char **__restrict __ptr,
int __flag,
476 const
char *__restrict __fmt, __gnuc_va_list __arg)
477 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__));
478extern
int __obstack_printf_chk (struct obstack *__restrict __obstack,
479 int __flag, const
char *__restrict __format,
481 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__printf__, 3, 4)));
482extern
int __obstack_vprintf_chk (struct obstack *__restrict __obstack,
484 const
char *__restrict __format,
485 __gnuc_va_list __args)
486 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__format__ (__printf__, 3, 0)));
487extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
488__attribute__ ((__nothrow__ , __leaf__)) asprintf (
char **__restrict __ptr, const
char *__restrict __fmt, ...)
490 return __asprintf_chk (__ptr, 2 - 1, __fmt,
491 __builtin_va_arg_pack ());
493extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
494__attribute__ ((__nothrow__ , __leaf__)) __asprintf (
char **__restrict __ptr,
const char *__restrict __fmt, ...)
496 return __asprintf_chk (__ptr, 2 - 1, __fmt,
497 __builtin_va_arg_pack ());
499extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
500__attribute__ ((__nothrow__ , __leaf__)) obstack_printf (
struct obstack *__restrict __obstack,
const char *__restrict __fmt, ...)
502 return __obstack_printf_chk (__obstack, 2 - 1, __fmt,
503 __builtin_va_arg_pack ());
505extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
506__attribute__ ((__nothrow__ , __leaf__)) vasprintf (
char **__restrict __ptr,
const char *__restrict __fmt, __gnuc_va_list __ap)
508 return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap);
510extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
511__attribute__ ((__nothrow__ , __leaf__)) obstack_vprintf (
struct obstack *__restrict __obstack,
const char *__restrict __fmt, __gnuc_va_list __ap)
513 return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt,
516extern char *__fgets_chk (
char *__restrict __s,
size_t __size,
int __n,
517 FILE *__restrict __stream)
518 __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3)));
519extern char *__fgets_alias (
char *__restrict __s,
int __n,
FILE *__restrict __stream) __asm__ (
"" "fgets")
520 __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2)));
521extern
char *__fgets_chk_warn (
char *__restrict __s,
size_t __size,
int __n,
FILE *__restrict __stream) __asm__ ("" "__fgets_chk")
522 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer")));
523extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2)))
char *
524fgets (
char *__restrict __s,
int __n,
FILE *__restrict __stream)
526 size_t sz = __builtin_object_size (__s, 2 > 1);
527 if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((
long unsigned int) (__n)) <= (sz) / (
sizeof (
char)))) && (((
long unsigned int) (__n)) <= (sz) / (
sizeof (
char)))))
528 return __fgets_alias (__s, __n, __stream);
529 if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((
long unsigned int) (__n)) <= (sz) / (
sizeof (
char)))) && !(((
long unsigned int) (__n)) <= (sz) / (
sizeof (
char)))))
530 return __fgets_chk_warn (__s, sz, __n, __stream);
531 return __fgets_chk (__s, sz, __n, __stream);
533extern size_t __fread_chk (
void *__restrict __ptr,
size_t __ptrlen,
534 size_t __size,
size_t __n,
535 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
536extern size_t __fread_alias (
void *__restrict __ptr,
size_t __size,
size_t __n,
FILE *__restrict __stream) __asm__ (
"" "fread") __attribute__ ((__warn_unused_result__));
537extern
size_t __fread_chk_warn (
void *__restrict __ptr,
size_t __ptrlen,
size_t __size,
size_t __n,
FILE *__restrict __stream) __asm__ ("" "__fread_chk")
538 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer")));
539extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__))
size_t
540fread (
void *__restrict __ptr,
size_t __size,
size_t __n,
541 FILE *__restrict __stream)
543 size_t sz = __builtin_object_size (__ptr, 0);
544 if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((
long unsigned int) (__n)) <= (sz) / (__size))) && (((
long unsigned int) (__n)) <= (sz) / (__size))))
545 return __fread_alias (__ptr, __size, __n, __stream);
546 if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((
long unsigned int) (__n)) <= (sz) / (__size))) && !(((
long unsigned int) (__n)) <= (sz) / (__size))))
547 return __fread_chk_warn (__ptr, sz, __size, __n, __stream);
548 return __fread_chk (__ptr, sz, __size, __n, __stream);
550extern char *__fgets_unlocked_chk (
char *__restrict __s,
size_t __size,
551 int __n,
FILE *__restrict __stream)
552 __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 3)));
553extern char *__fgets_unlocked_alias (
char *__restrict __s,
int __n,
FILE *__restrict __stream) __asm__ (
"" "fgets_unlocked")
554 __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2)));
555extern
char *__fgets_unlocked_chk_warn (
char *__restrict __s,
size_t __size,
int __n,
FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk")
556 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer")));
557extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2)))
char *
558fgets_unlocked (
char *__restrict __s,
int __n,
FILE *__restrict __stream)
560 size_t sz = __builtin_object_size (__s, 2 > 1);
561 if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((
long unsigned int) (__n)) <= (sz) / (
sizeof (
char)))) && (((
long unsigned int) (__n)) <= (sz) / (
sizeof (
char)))))
562 return __fgets_unlocked_alias (__s, __n, __stream);
563 if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((
long unsigned int) (__n)) <= (sz) / (
sizeof (
char)))) && !(((
long unsigned int) (__n)) <= (sz) / (
sizeof (
char)))))
564 return __fgets_unlocked_chk_warn (__s, sz, __n, __stream);
565 return __fgets_unlocked_chk (__s, sz, __n, __stream);
567extern size_t __fread_unlocked_chk (
void *__restrict __ptr,
size_t __ptrlen,
568 size_t __size,
size_t __n,
569 FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
570extern size_t __fread_unlocked_alias (
void *__restrict __ptr,
size_t __size,
size_t __n,
FILE *__restrict __stream) __asm__ (
"" "fread_unlocked") __attribute__ ((__warn_unused_result__));
571extern
size_t __fread_unlocked_chk_warn (
void *__restrict __ptr,
size_t __ptrlen,
size_t __size,
size_t __n,
FILE *__restrict __stream) __asm__ ("" "__fread_unlocked_chk")
572 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer")));
573extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__))
size_t
574fread_unlocked (
void *__restrict __ptr,
size_t __size,
size_t __n,
575 FILE *__restrict __stream)
577 size_t sz = __builtin_object_size (__ptr, 0);
578 if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((
long unsigned int) (__n)) <= (sz) / (__size))) && (((
long unsigned int) (__n)) <= (sz) / (__size))))
580 if (__builtin_constant_p (__size)
581 && __builtin_constant_p (__n)
582 && (__size | __n) < (((
size_t) 1) << (8 *
sizeof (
size_t) / 2))
583 && __size * __n <= 8)
585 size_t __cnt = __size * __n;
586 char *__cptr = (
char *) __ptr;
589 for (; __cnt > 0; --__cnt)
591 int __c = getc_unlocked (__stream);
596 return (__cptr - (
char *) __ptr) / __size;
598 return __fread_unlocked_alias (__ptr, __size, __n, __stream);
600 if ((((__typeof (__n)) 0 < (__typeof (__n)) -1 || (__builtin_constant_p (__n) && (__n) > 0)) && __builtin_constant_p ((((
long unsigned int) (__n)) <= (sz) / (__size))) && !(((
long unsigned int) (__n)) <= (sz) / (__size))))
601 return __fread_unlocked_chk_warn (__ptr, sz, __size, __n, __stream);
602 return __fread_unlocked_chk (__ptr, sz, __size, __n, __stream);
606typedef __u_char u_char;
607typedef __u_short u_short;
608typedef __u_int u_int;
609typedef __u_long u_long;
610typedef __quad_t quad_t;
611typedef __u_quad_t u_quad_t;
613typedef __loff_t loff_t;
614typedef __ino_t ino_t;
615typedef __ino64_t ino64_t;
616typedef __dev_t dev_t;
617typedef __gid_t gid_t;
618typedef __mode_t mode_t;
619typedef __nlink_t nlink_t;
620typedef __uid_t uid_t;
621typedef __pid_t pid_t;
623typedef __daddr_t daddr_t;
624typedef __caddr_t caddr_t;
625typedef __key_t key_t;
626typedef __clock_t clock_t;
627typedef __clockid_t clockid_t;
628typedef __time_t time_t;
629typedef __timer_t timer_t;
630typedef __useconds_t useconds_t;
631typedef __suseconds_t suseconds_t;
632typedef unsigned long int ulong;
633typedef unsigned short int ushort;
634typedef unsigned int uint;
635typedef __int8_t int8_t;
636typedef __int16_t int16_t;
637typedef __int32_t int32_t;
638typedef __int64_t int64_t;
639typedef __uint8_t u_int8_t;
640typedef __uint16_t u_int16_t;
641typedef __uint32_t u_int32_t;
642typedef __uint64_t u_int64_t;
643typedef int register_t __attribute__ ((__mode__ (__word__)));
644static __inline __uint16_t
645__bswap_16 (__uint16_t __bsx)
647 return __builtin_bswap16 (__bsx);
649static __inline __uint32_t
650__bswap_32 (__uint32_t __bsx)
652 return __builtin_bswap32 (__bsx);
654__extension__
static __inline __uint64_t
655__bswap_64 (__uint64_t __bsx)
657 return __builtin_bswap64 (__bsx);
659static __inline __uint16_t
660__uint16_identity (__uint16_t __x)
664static __inline __uint32_t
665__uint32_identity (__uint32_t __x)
669static __inline __uint64_t
670__uint64_identity (__uint64_t __x)
676 unsigned long int __val[(1024 / (8 *
sizeof (
unsigned long int)))];
682 __suseconds_t tv_usec;
687 __syscall_slong_t tv_nsec;
689typedef long int __fd_mask;
692 __fd_mask fds_bits[1024 / (8 * (int)
sizeof (__fd_mask))];
694typedef __fd_mask fd_mask;
696extern int select (
int __nfds,
fd_set *__restrict __readfds,
697 fd_set *__restrict __writefds,
698 fd_set *__restrict __exceptfds,
699 struct timeval *__restrict __timeout);
700extern int pselect (
int __nfds,
fd_set *__restrict __readfds,
701 fd_set *__restrict __writefds,
702 fd_set *__restrict __exceptfds,
703 const struct timespec *__restrict __timeout,
705extern long int __fdelt_chk (
long int __d);
706extern long int __fdelt_warn (
long int __d)
707 __attribute__((__warning__ (
"bit outside of fd_set selected")));
709typedef __blksize_t blksize_t;
710typedef __blkcnt_t blkcnt_t;
711typedef __fsblkcnt_t fsblkcnt_t;
712typedef __fsfilcnt_t fsfilcnt_t;
713typedef __blkcnt64_t blkcnt64_t;
714typedef __fsblkcnt64_t fsblkcnt64_t;
715typedef __fsfilcnt64_t fsfilcnt64_t;
718 __extension__
unsigned long long int __value64;
737 unsigned int __count;
739 unsigned int __nusers;
747 unsigned int __readers;
748 unsigned int __writers;
749 unsigned int __wrphase_futex;
750 unsigned int __writers_futex;
755 signed char __rwelision;
756 unsigned char __pad1[7];
757 unsigned long int __pad2;
758 unsigned int __flags;
764 unsigned int __g_refs[2] ;
765 unsigned int __g_size[2];
766 unsigned int __g1_orig_size;
767 unsigned int __wrefs;
768 unsigned int __g_signals[2];
770typedef unsigned int __tss_t;
771typedef unsigned long int __thrd_t;
776typedef unsigned long int pthread_t;
787typedef unsigned int pthread_key_t;
788typedef int pthread_once_t;
805 __extension__
long long int __align;
818typedef volatile int pthread_spinlock_t;
842 __blksize_t st_blksize;
843 __blkcnt_t st_blocks;
847 __syscall_slong_t __glibc_reserved[3];
860 __blksize_t st_blksize;
861 __blkcnt64_t st_blocks;
865 __syscall_slong_t __glibc_reserved[3];
867extern int stat (
const char *__restrict __file,
868 struct stat *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
869extern int fstat (
int __fd,
struct stat *__buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
870extern int stat64 (
const char *__restrict __file,
871 struct stat64 *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
872extern int fstat64 (
int __fd,
struct stat64 *__buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
873extern int fstatat (
int __fd,
const char *__restrict __file,
874 struct stat *__restrict __buf,
int __flag)
875 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
876extern int fstatat64 (
int __fd,
const char *__restrict __file,
877 struct stat64 *__restrict __buf,
int __flag)
878 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
879extern int lstat (
const char *__restrict __file,
880 struct stat *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
881extern int lstat64 (
const char *__restrict __file,
882 struct stat64 *__restrict __buf)
883 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
884extern int chmod (
const char *__file, __mode_t __mode)
885 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
886extern int lchmod (
const char *__file, __mode_t __mode)
887 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
888extern int fchmod (
int __fd, __mode_t __mode) __attribute__ ((__nothrow__ , __leaf__));
889extern int fchmodat (
int __fd,
const char *__file, __mode_t __mode,
891 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
892extern __mode_t umask (__mode_t __mask) __attribute__ ((__nothrow__ , __leaf__));
893extern __mode_t getumask (
void) __attribute__ ((__nothrow__ , __leaf__));
894extern
int mkdir (const
char *__path, __mode_t __mode)
895 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
896extern
int mkdirat (
int __fd, const
char *__path, __mode_t __mode)
897 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
898extern
int mknod (const
char *__path, __mode_t __mode, __dev_t __dev)
899 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
900extern
int mknodat (
int __fd, const
char *__path, __mode_t __mode,
901 __dev_t __dev) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
902extern
int mkfifo (const
char *__path, __mode_t __mode)
903 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
904extern
int mkfifoat (
int __fd, const
char *__path, __mode_t __mode)
905 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
906extern
int utimensat (
int __fd, const
char *__path,
909 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
910extern
int futimens (
int __fd, const struct
timespec __times[2]) __attribute__ ((__nothrow__ , __leaf__));
911typedef __signed__
char __s8;
912typedef
unsigned char __u8;
913typedef __signed__
short __s16;
914typedef
unsigned short __u16;
915typedef __signed__
int __s32;
916typedef
unsigned int __u32;
917__extension__ typedef __signed__
long long __s64;
918__extension__ typedef
unsigned long long __u64;
920 unsigned long fds_bits[1024 / (8 *
sizeof(long))];
922typedef void (*__kernel_sighandler_t)(int);
923typedef int __kernel_key_t;
924typedef int __kernel_mqd_t;
925typedef unsigned short __kernel_old_uid_t;
926typedef unsigned short __kernel_old_gid_t;
927typedef unsigned long __kernel_old_dev_t;
928typedef long __kernel_long_t;
929typedef unsigned long __kernel_ulong_t;
930typedef __kernel_ulong_t __kernel_ino_t;
931typedef unsigned int __kernel_mode_t;
932typedef int __kernel_pid_t;
933typedef int __kernel_ipc_pid_t;
934typedef unsigned int __kernel_uid_t;
935typedef unsigned int __kernel_gid_t;
936typedef __kernel_long_t __kernel_suseconds_t;
937typedef int __kernel_daddr_t;
938typedef unsigned int __kernel_uid32_t;
939typedef unsigned int __kernel_gid32_t;
940typedef __kernel_ulong_t __kernel_size_t;
941typedef __kernel_long_t __kernel_ssize_t;
942typedef __kernel_long_t __kernel_ptrdiff_t;
946typedef __kernel_long_t __kernel_off_t;
947typedef long long __kernel_loff_t;
948typedef __kernel_long_t __kernel_old_time_t;
949typedef __kernel_long_t __kernel_time_t;
950typedef long long __kernel_time64_t;
951typedef __kernel_long_t __kernel_clock_t;
952typedef int __kernel_timer_t;
953typedef int __kernel_clockid_t;
954typedef char * __kernel_caddr_t;
955typedef unsigned short __kernel_uid16_t;
956typedef unsigned short __kernel_gid16_t;
963typedef __u16 __sum16;
965typedef unsigned __poll_t;
974 __u64 stx_attributes;
983 __u64 stx_attributes_mask;
988 __u32 stx_rdev_major;
989 __u32 stx_rdev_minor;
997int statx (
int __dirfd,
const char *__restrict __path,
int __flags,
998 unsigned int __mask,
struct statx *__restrict __buf)
999 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 5)));
1014__extension__
typedef struct
1019extern size_t __ctype_get_mb_cur_max (
void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
1020extern double atof (
const char *__nptr)
1021 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1022extern
int atoi (const
char *__nptr)
1023 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1024extern
long int atol (const
char *__nptr)
1025 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1026__extension__ extern
long long int atoll (const
char *__nptr)
1027 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1028extern
double strtod (const
char *__restrict __nptr,
1029 char **__restrict __endptr)
1030 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1031extern
float strtof (const
char *__restrict __nptr,
1032 char **__restrict __endptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1033extern
long double strtold (const
char *__restrict __nptr,
1034 char **__restrict __endptr)
1035 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1036extern _Float32 strtof32 (const
char *__restrict __nptr,
1037 char **__restrict __endptr)
1038 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1039extern _Float64 strtof64 (const
char *__restrict __nptr,
1040 char **__restrict __endptr)
1041 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1042extern _Float128 strtof128 (const
char *__restrict __nptr,
1043 char **__restrict __endptr)
1044 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1045extern _Float32x strtof32x (const
char *__restrict __nptr,
1046 char **__restrict __endptr)
1047 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1048extern _Float64x strtof64x (const
char *__restrict __nptr,
1049 char **__restrict __endptr)
1050 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1051extern
long int strtol (const
char *__restrict __nptr,
1052 char **__restrict __endptr,
int __base)
1053 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1054extern
unsigned long int strtoul (const
char *__restrict __nptr,
1055 char **__restrict __endptr,
int __base)
1056 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1058extern
long long int strtoq (const
char *__restrict __nptr,
1059 char **__restrict __endptr,
int __base)
1060 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1062extern
unsigned long long int strtouq (const
char *__restrict __nptr,
1063 char **__restrict __endptr,
int __base)
1064 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1066extern
long long int strtoll (const
char *__restrict __nptr,
1067 char **__restrict __endptr,
int __base)
1068 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1070extern
unsigned long long int strtoull (const
char *__restrict __nptr,
1071 char **__restrict __endptr,
int __base)
1072 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1073extern
int strfromd (
char *__dest,
size_t __size, const
char *__format,
1075 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
1076extern
int strfromf (
char *__dest,
size_t __size, const
char *__format,
1078 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
1079extern
int strfroml (
char *__dest,
size_t __size, const
char *__format,
1081 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
1082extern
int strfromf32 (
char *__dest,
size_t __size, const
char * __format,
1084 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
1085extern
int strfromf64 (
char *__dest,
size_t __size, const
char * __format,
1087 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
1088extern
int strfromf128 (
char *__dest,
size_t __size, const
char * __format,
1090 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
1091extern
int strfromf32x (
char *__dest,
size_t __size, const
char * __format,
1093 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
1094extern
int strfromf64x (
char *__dest,
size_t __size, const
char * __format,
1096 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
1099 struct __locale_data *__locales[13];
1100 const unsigned short int *__ctype_b;
1101 const int *__ctype_tolower;
1102 const int *__ctype_toupper;
1103 const char *__names[13];
1107extern long int strtol_l (
const char *__restrict __nptr,
1108 char **__restrict __endptr,
int __base,
1109 locale_t __loc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));
1110extern unsigned long int strtoul_l (
const char *__restrict __nptr,
1111 char **__restrict __endptr,
1113 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));
1115extern long long int strtoll_l (
const char *__restrict __nptr,
1116 char **__restrict __endptr,
int __base,
1118 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));
1120extern unsigned long long int strtoull_l (
const char *__restrict __nptr,
1121 char **__restrict __endptr,
1123 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 4)));
1124extern double strtod_l (
const char *__restrict __nptr,
1125 char **__restrict __endptr,
locale_t __loc)
1126 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
1127extern float strtof_l (
const char *__restrict __nptr,
1128 char **__restrict __endptr,
locale_t __loc)
1129 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
1130extern long double strtold_l (
const char *__restrict __nptr,
1131 char **__restrict __endptr,
1133 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
1134extern _Float32 strtof32_l (
const char *__restrict __nptr,
1135 char **__restrict __endptr,
1137 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
1138extern _Float64 strtof64_l (
const char *__restrict __nptr,
1139 char **__restrict __endptr,
1141 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
1142extern _Float128 strtof128_l (
const char *__restrict __nptr,
1143 char **__restrict __endptr,
1145 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
1146extern _Float32x strtof32x_l (
const char *__restrict __nptr,
1147 char **__restrict __endptr,
1149 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
1150extern _Float64x strtof64x_l (
const char *__restrict __nptr,
1151 char **__restrict __endptr,
1153 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
1154extern __inline __attribute__ ((__gnu_inline__))
int
1155__attribute__ ((__nothrow__ , __leaf__)) atoi (
const char *__nptr)
1157 return (
int) strtol (__nptr, (
char **) ((
void *)0), 10);
1159extern __inline __attribute__ ((__gnu_inline__))
long int
1160__attribute__ ((__nothrow__ , __leaf__)) atol (
const char *__nptr)
1162 return strtol (__nptr, (
char **) ((
void *)0), 10);
1164__extension__
extern __inline __attribute__ ((__gnu_inline__))
long long int
1165__attribute__ ((__nothrow__ , __leaf__)) atoll (
const char *__nptr)
1167 return strtoll (__nptr, (
char **) ((
void *)0), 10);
1169extern char *l64a (
long int __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
1170extern long int a64l (
const char *__s)
1171 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1172extern
long int random (
void) __attribute__ ((__nothrow__ , __leaf__));
1173extern
void srandom (
unsigned int __seed) __attribute__ ((__nothrow__ , __leaf__));
1174extern
char *initstate (
unsigned int __seed,
char *__statebuf,
1175 size_t __statelen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
1176extern
char *setstate (
char *__statebuf) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1187extern int random_r (
struct random_data *__restrict __buf,
1188 int32_t *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1189extern int srandom_r (
unsigned int __seed,
struct random_data *__buf)
1190 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
1191extern int initstate_r (
unsigned int __seed,
char *__restrict __statebuf,
1194 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4)));
1195extern int setstate_r (
char *__restrict __statebuf,
1197 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1198extern int rand (
void) __attribute__ ((__nothrow__ , __leaf__));
1199extern void srand (
unsigned int __seed) __attribute__ ((__nothrow__ , __leaf__));
1200extern int rand_r (
unsigned int *__seed) __attribute__ ((__nothrow__ , __leaf__));
1201extern double drand48 (
void) __attribute__ ((__nothrow__ , __leaf__));
1202extern double erand48 (
unsigned short int __xsubi[3]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1203extern long int lrand48 (
void) __attribute__ ((__nothrow__ , __leaf__));
1204extern long int nrand48 (
unsigned short int __xsubi[3])
1205 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1206extern long int mrand48 (
void) __attribute__ ((__nothrow__ , __leaf__));
1207extern long int jrand48 (
unsigned short int __xsubi[3])
1208 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1209extern void srand48 (
long int __seedval) __attribute__ ((__nothrow__ , __leaf__));
1210extern unsigned short int *seed48 (
unsigned short int __seed16v[3])
1211 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1212extern void lcong48 (
unsigned short int __param[7]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1215 unsigned short int __x[3];
1216 unsigned short int __old_x[3];
1217 unsigned short int __c;
1218 unsigned short int __init;
1219 __extension__
unsigned long long int __a;
1221extern int drand48_r (
struct drand48_data *__restrict __buffer,
1222 double *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1223extern int erand48_r (
unsigned short int __xsubi[3],
1225 double *__restrict __result) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1226extern int lrand48_r (
struct drand48_data *__restrict __buffer,
1227 long int *__restrict __result)
1228 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1229extern int nrand48_r (
unsigned short int __xsubi[3],
1231 long int *__restrict __result)
1232 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1233extern int mrand48_r (
struct drand48_data *__restrict __buffer,
1234 long int *__restrict __result)
1235 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1236extern int jrand48_r (
unsigned short int __xsubi[3],
1238 long int *__restrict __result)
1239 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1240extern int srand48_r (
long int __seedval,
struct drand48_data *__buffer)
1241 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
1242extern int seed48_r (
unsigned short int __seed16v[3],
1243 struct drand48_data *__buffer) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1244extern int lcong48_r (
unsigned short int __param[7],
1246 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1247extern void *malloc (
size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__))
1248 __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__));
1249extern
void *calloc (
size_t __nmemb,
size_t __size)
1250 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_size__ (1, 2))) __attribute__ ((__warn_unused_result__));
1251extern
void *realloc (
void *__ptr,
size_t __size)
1252 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__alloc_size__ (2)));
1253extern
void free (
void *__ptr) __attribute__ ((__nothrow__ , __leaf__));
1254extern
void *reallocarray (
void *__ptr,
size_t __nmemb,
size_t __size)
1255 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__))
1256 __attribute__ ((__alloc_size__ (2, 3)))
1257 __attribute__ ((__malloc__ (__builtin_free, 1)));
1258extern
void *reallocarray (
void *__ptr,
size_t __nmemb,
size_t __size)
1259 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__ (reallocarray, 1)));
1261extern
void *alloca (
size_t __size) __attribute__ ((__nothrow__ , __leaf__));
1263extern
void *valloc (
size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__))
1264 __attribute__ ((__alloc_size__ (1))) __attribute__ ((__warn_unused_result__));
1265extern
int posix_memalign (
void **__memptr,
size_t __alignment,
size_t __size)
1266 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1267extern
void *aligned_alloc (
size_t __alignment,
size_t __size)
1268 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__alloc_align__ (1)))
1269 __attribute__ ((__alloc_size__ (2))) __attribute__ ((__warn_unused_result__));
1270extern
void abort (
void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));
1271extern
int atexit (
void (*__func) (
void)) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1272extern
int at_quick_exit (
void (*__func) (
void)) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1273extern
int on_exit (
void (*__func) (
int __status,
void *__arg),
void *__arg)
1274 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1275extern
void exit (
int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));
1276extern
void quick_exit (
int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));
1277extern
void _Exit (
int __status) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__noreturn__));
1278extern
char *getenv (const
char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1279extern
char *secure_getenv (const
char *__name)
1280 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1281extern
int putenv (
char *__string) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1282extern
int setenv (const
char *__name, const
char *__value,
int __replace)
1283 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
1284extern
int unsetenv (const
char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1285extern
int clearenv (
void) __attribute__ ((__nothrow__ , __leaf__));
1286extern
char *mktemp (
char *__template) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1287extern
int mkstemp (
char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1288extern
int mkstemp64 (
char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1289extern
int mkstemps (
char *__template,
int __suffixlen) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1290extern
int mkstemps64 (
char *__template,
int __suffixlen)
1291 __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1292extern
char *mkdtemp (
char *__template) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1293extern
int mkostemp (
char *__template,
int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1294extern
int mkostemp64 (
char *__template,
int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1295extern
int mkostemps (
char *__template,
int __suffixlen,
int __flags)
1296 __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1297extern
int mkostemps64 (
char *__template,
int __suffixlen,
int __flags)
1298 __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1299extern
int system (const
char *__command) __attribute__ ((__warn_unused_result__));
1300extern
char *canonicalize_file_name (const
char *__name)
1301 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__malloc__))
1302 __attribute__ ((__malloc__ (__builtin_free, 1))) __attribute__ ((__warn_unused_result__));
1303extern
char *realpath (const
char *__restrict __name,
1304 char *__restrict __resolved) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
1305typedef
int (*__compar_fn_t) (const
void *, const
void *);
1306typedef __compar_fn_t comparison_fn_t;
1307typedef
int (*__compar_d_fn_t) (const
void *, const
void *,
void *);
1308extern
void *bsearch (const
void *__key, const
void *__base,
1309 size_t __nmemb,
size_t __size, __compar_fn_t __compar)
1310 __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__));
1311extern __inline __attribute__ ((__gnu_inline__))
void *
1312bsearch (const
void *__key, const
void *__base,
size_t __nmemb,
size_t __size,
1313 __compar_fn_t __compar)
1315 size_t __l, __u, __idx;
1322 __idx = (__l + __u) / 2;
1323 __p = (
const void *) (((
const char *) __base) + (__idx * __size));
1324 __comparison = (*__compar) (__key, __p);
1325 if (__comparison < 0)
1327 else if (__comparison > 0)
1331 return (
void *) __p;
1336extern void qsort (
void *__base,
size_t __nmemb,
size_t __size,
1337 __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
1338extern void qsort_r (
void *__base,
size_t __nmemb,
size_t __size,
1339 __compar_d_fn_t __compar,
void *__arg)
1340 __attribute__ ((__nonnull__ (1, 4)));
1341extern int abs (
int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
1342extern long int labs (
long int __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
1343__extension__
extern long long int llabs (
long long int __x)
1344 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
1345extern div_t div (
int __numer,
int __denom)
1346 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
1347extern ldiv_t ldiv (
long int __numer,
long int __denom)
1348 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
1349__extension__
extern lldiv_t lldiv (
long long int __numer,
1350 long long int __denom)
1351 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
1352extern char *ecvt (
double __value,
int __ndigit,
int *__restrict __decpt,
1353 int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
1354extern
char *fcvt (
double __value,
int __ndigit,
int *__restrict __decpt,
1355 int *__restrict __sign) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
1356extern
char *gcvt (
double __value,
int __ndigit,
char *__buf)
1357 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));
1358extern
char *qecvt (
long double __value,
int __ndigit,
1359 int *__restrict __decpt,
int *__restrict __sign)
1360 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
1361extern
char *qfcvt (
long double __value,
int __ndigit,
1362 int *__restrict __decpt,
int *__restrict __sign)
1363 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
1364extern
char *qgcvt (
long double __value,
int __ndigit,
char *__buf)
1365 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));
1366extern
int ecvt_r (
double __value,
int __ndigit,
int *__restrict __decpt,
1367 int *__restrict __sign,
char *__restrict __buf,
1368 size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));
1369extern
int fcvt_r (
double __value,
int __ndigit,
int *__restrict __decpt,
1370 int *__restrict __sign,
char *__restrict __buf,
1371 size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));
1372extern
int qecvt_r (
long double __value,
int __ndigit,
1373 int *__restrict __decpt,
int *__restrict __sign,
1374 char *__restrict __buf,
size_t __len)
1375 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));
1376extern
int qfcvt_r (
long double __value,
int __ndigit,
1377 int *__restrict __decpt,
int *__restrict __sign,
1378 char *__restrict __buf,
size_t __len)
1379 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3, 4, 5)));
1380extern
int mblen (const
char *__s,
size_t __n) __attribute__ ((__nothrow__ , __leaf__));
1381extern
int mbtowc (
wchar_t *__restrict __pwc,
1382 const
char *__restrict __s,
size_t __n) __attribute__ ((__nothrow__ , __leaf__));
1383extern
int wctomb (
char *__s,
wchar_t __wchar) __attribute__ ((__nothrow__ , __leaf__));
1384extern
size_t mbstowcs (
wchar_t *__restrict __pwcs,
1385 const
char *__restrict __s,
size_t __n) __attribute__ ((__nothrow__ , __leaf__))
1386 __attribute__ ((__access__ (__read_only__, 2)));
1387extern
size_t wcstombs (
char *__restrict __s,
1388 const
wchar_t *__restrict __pwcs,
size_t __n)
1389 __attribute__ ((__nothrow__ , __leaf__))
1390 __attribute__ ((__access__ (__write_only__, 1, 3)))
1391 __attribute__ ((__access__ (__read_only__, 2)));
1392extern
int rpmatch (const
char *__response) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1393extern
int getsubopt (
char **__restrict __optionp,
1394 char *const *__restrict __tokens,
1395 char **__restrict __valuep)
1396 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__));
1397extern
int posix_openpt (
int __oflag) __attribute__ ((__warn_unused_result__));
1398extern
int grantpt (
int __fd) __attribute__ ((__nothrow__ , __leaf__));
1399extern
int unlockpt (
int __fd) __attribute__ ((__nothrow__ , __leaf__));
1400extern
char *ptsname (
int __fd) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
1401extern
int ptsname_r (
int __fd,
char *__buf,
size_t __buflen)
1402 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3)));
1403extern
int getpt (
void);
1404extern
int getloadavg (
double __loadavg[],
int __nelem)
1405 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1406extern __inline __attribute__ ((__gnu_inline__))
double
1407__attribute__ ((__nothrow__ , __leaf__)) atof (const
char *__nptr)
1409 return strtod (__nptr, (
char **) ((
void *)0));
1411extern char *__realpath_chk (
const char *__restrict __name,
1412 char *__restrict __resolved,
1413 size_t __resolvedlen) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
1414extern char *__realpath_alias (
const char *__restrict __name,
char *__restrict __resolved) __asm__ (
"" "realpath") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
1415extern
char *__realpath_chk_warn (const
char *__restrict __name,
char *__restrict __resolved,
size_t __resolvedlen) __asm__ ("" "__realpath_chk") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__))
1416 __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes
long buffer")));
1417extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__))
char *
1418__attribute__ ((__nothrow__ , __leaf__)) realpath (const
char *__restrict __name,
char *__restrict __resolved)
1420 size_t sz = __builtin_object_size (__resolved, 2 > 1);
1421 if (sz == (
size_t) -1)
1422 return __realpath_alias (__name, __resolved);
1423 return __realpath_chk (__name, __resolved, sz);
1425extern int __ptsname_r_chk (
int __fd,
char *__buf,
size_t __buflen,
1426 size_t __nreal) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)))
1427 __attribute__ ((__access__ (__write_only__, 2, 3)));
1428extern
int __ptsname_r_alias (
int __fd,
char *__buf,
size_t __buflen) __asm__ ("" "ptsname_r") __attribute__ ((__nothrow__ , __leaf__))
1429 __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 2, 3)));
1430extern
int __ptsname_r_chk_warn (
int __fd,
char *__buf,
size_t __buflen,
size_t __nreal) __asm__ ("" "__ptsname_r_chk") __attribute__ ((__nothrow__ , __leaf__))
1431 __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf")));
1432extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
1433__attribute__ ((__nothrow__ , __leaf__)) ptsname_r (
int __fd,
char *__buf,
size_t __buflen)
1435 return ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && (((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __ptsname_r_alias (__fd, __buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && !(((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1))));
1437extern int __wctomb_chk (
char *__s,
wchar_t __wchar,
size_t __buflen)
1438 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
1439extern int __wctomb_alias (
char *__s,
wchar_t __wchar) __asm__ (
"" "wctomb") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
1440extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__))
int
1441__attribute__ ((__nothrow__ , __leaf__)) wctomb (
char *__s,
wchar_t __wchar)
1443 if (__builtin_object_size (__s, 2 > 1) != (
size_t) -1
1444 && 16 > __builtin_object_size (__s, 2 > 1))
1445 return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1));
1446 return __wctomb_alias (__s, __wchar);
1448extern size_t __mbstowcs_chk (
wchar_t *__restrict __dst,
1449 const char *__restrict __src,
1450 size_t __len,
size_t __dstlen) __attribute__ ((__nothrow__ , __leaf__))
1451 __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2)));
1452extern
size_t __mbstowcs_alias (
wchar_t *__restrict __dst, const
char *__restrict __src,
size_t __len) __asm__ ("" "mbstowcs") __attribute__ ((__nothrow__ , __leaf__))
1453 __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2)));
1454extern
size_t __mbstowcs_chk_warn (
wchar_t *__restrict __dst, const
char *__restrict __src,
size_t __len,
size_t __dstlen) __asm__ ("" "__mbstowcs_chk") __attribute__ ((__nothrow__ , __leaf__))
1455 __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (
wchar_t)")));
1456extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
size_t
1457__attribute__ ((__nothrow__ , __leaf__)) mbstowcs (
wchar_t *__restrict __dst, const
char *__restrict __src,
size_t __len)
1459 return ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((
long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (
sizeof (
wchar_t)))) && (((
long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (
sizeof (
wchar_t)))) ? __mbstowcs_alias (__dst, __src, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((
long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (
sizeof (
wchar_t)))) && !(((
long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (
sizeof (
wchar_t)))) ? __mbstowcs_chk_warn (__dst, __src, __len, (__builtin_object_size (__dst, 2 > 1)) / (
sizeof (
wchar_t))) : __mbstowcs_chk (__dst, __src, __len, (__builtin_object_size (__dst, 2 > 1)) / (
sizeof (
wchar_t)))));
1461extern size_t __wcstombs_chk (
char *__restrict __dst,
1462 const wchar_t *__restrict __src,
1463 size_t __len,
size_t __dstlen) __attribute__ ((__nothrow__ , __leaf__))
1464 __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2)));
1465extern
size_t __wcstombs_alias (
char *__restrict __dst, const
wchar_t *__restrict __src,
size_t __len) __asm__ ("" "wcstombs") __attribute__ ((__nothrow__ , __leaf__))
1466 __attribute__ ((__access__ (__write_only__, 1, 3))) __attribute__ ((__access__ (__read_only__, 2)));
1467extern
size_t __wcstombs_chk_warn (
char *__restrict __dst, const
wchar_t *__restrict __src,
size_t __len,
size_t __dstlen) __asm__ ("" "__wcstombs_chk") __attribute__ ((__nothrow__ , __leaf__))
1468 __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len")));
1469extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
size_t
1470__attribute__ ((__nothrow__ , __leaf__)) wcstombs (
char *__restrict __dst, const
wchar_t *__restrict __src,
size_t __len)
1472 return ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((
long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (
sizeof (
char)))) && (((
long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (
sizeof (
char)))) ? __wcstombs_alias (__dst, __src, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((
long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (
sizeof (
char)))) && !(((
long unsigned int) (__len)) <= (__builtin_object_size (__dst, 2 > 1)) / (
sizeof (
char)))) ? __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1)) : __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1))));
1475typedef long int ptrdiff_t;
1477extern void *memcpy (
void *__restrict __dest,
const void *__restrict __src,
1478 size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1479extern void *memmove (
void *__dest,
const void *__src,
size_t __n)
1480 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1481extern void *memccpy (
void *__restrict __dest,
const void *__restrict __src,
1482 int __c,
size_t __n)
1483 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__access__ (__write_only__, 1, 4)));
1484extern
void *memset (
void *__s,
int __c,
size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1485extern
int memcmp (const
void *__s1, const
void *__s2,
size_t __n)
1486 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1487extern
int __memcmpeq (const
void *__s1, const
void *__s2,
size_t __n)
1488 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1489extern
void *memchr (const
void *__s,
int __c,
size_t __n)
1490 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1491extern
void *rawmemchr (const
void *__s,
int __c)
1492 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1493extern
void *memrchr (const
void *__s,
int __c,
size_t __n)
1494 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)))
1495 __attribute__ ((__access__ (__read_only__, 1, 3)));
1496extern
char *strcpy (
char *__restrict __dest, const
char *__restrict __src)
1497 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1498extern
char *strncpy (
char *__restrict __dest,
1499 const
char *__restrict __src,
size_t __n)
1500 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1501extern
char *strcat (
char *__restrict __dest, const
char *__restrict __src)
1502 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1503extern
char *strncat (
char *__restrict __dest, const
char *__restrict __src,
1504 size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1505extern
int strcmp (const
char *__s1, const
char *__s2)
1506 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1507extern
int strncmp (const
char *__s1, const
char *__s2,
size_t __n)
1508 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1509extern
int strcoll (const
char *__s1, const
char *__s2)
1510 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1511extern
size_t strxfrm (
char *__restrict __dest,
1512 const
char *__restrict __src,
size_t __n)
1513 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__access__ (__write_only__, 1, 3)));
1514extern
int strcoll_l (const
char *__s1, const
char *__s2,
locale_t __l)
1515 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
1516extern
size_t strxfrm_l (
char *__dest, const
char *__src,
size_t __n,
1517 locale_t __l) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4)))
1518 __attribute__ ((__access__ (__write_only__, 1, 3)));
1519extern
char *
strdup (const
char *__s)
1520 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
1521extern
char *strndup (const
char *__string,
size_t __n)
1522 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
1523extern
char *strchr (const
char *__s,
int __c)
1524 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1525extern
char *strrchr (const
char *__s,
int __c)
1526 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1527extern
char *strchrnul (const
char *__s,
int __c)
1528 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1529extern
size_t strcspn (const
char *__s, const
char *__reject)
1530 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1531extern
size_t strspn (const
char *__s, const
char *__accept)
1532 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1533extern
char *strpbrk (const
char *__s, const
char *__accept)
1534 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1535extern
char *strstr (const
char *__haystack, const
char *__needle)
1536 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1537extern
char *strtok (
char *__restrict __s, const
char *__restrict __delim)
1538 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
1539extern
char *__strtok_r (
char *__restrict __s,
1540 const
char *__restrict __delim,
1541 char **__restrict __save_ptr)
1542 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
1543extern
char *strtok_r (
char *__restrict __s, const
char *__restrict __delim,
1544 char **__restrict __save_ptr)
1545 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
1546extern
char *strcasestr (const
char *__haystack, const
char *__needle)
1547 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1548extern
void *memmem (const
void *__haystack,
size_t __haystacklen,
1549 const
void *__needle,
size_t __needlelen)
1550 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)))
1551 __attribute__ ((__access__ (__read_only__, 1, 2)))
1552 __attribute__ ((__access__ (__read_only__, 3, 4)));
1553extern
void *__mempcpy (
void *__restrict __dest,
1554 const
void *__restrict __src,
size_t __n)
1555 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1556extern
void *mempcpy (
void *__restrict __dest,
1557 const
void *__restrict __src,
size_t __n)
1558 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1559extern
size_t strlen (const
char *__s)
1560 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1561extern
size_t strnlen (const
char *__string,
size_t __maxlen)
1562 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1563extern
char *strerror (
int __errnum) __attribute__ ((__nothrow__ , __leaf__));
1564extern
char *strerror_r (
int __errnum,
char *__buf,
size_t __buflen)
1565 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3)));
1566extern const
char *strerrordesc_np (
int __err) __attribute__ ((__nothrow__ , __leaf__));
1567extern const
char *strerrorname_np (
int __err) __attribute__ ((__nothrow__ , __leaf__));
1568extern
char *strerror_l (
int __errnum,
locale_t __l) __attribute__ ((__nothrow__ , __leaf__));
1570extern
int bcmp (const
void *__s1, const
void *__s2,
size_t __n)
1571 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1572extern
void bcopy (const
void *__src,
void *__dest,
size_t __n)
1573 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1574extern
void bzero (
void *__s,
size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1575extern
char *index (const
char *__s,
int __c)
1576 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1577extern
char *rindex (const
char *__s,
int __c)
1578 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
1579extern
int ffs (
int __i) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
1580extern
int ffsl (
long int __l) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
1581__extension__ extern
int ffsll (
long long int __ll)
1582 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
1583extern
int strcasecmp (const
char *__s1, const
char *__s2)
1584 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1585extern
int strncasecmp (const
char *__s1, const
char *__s2,
size_t __n)
1586 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1587extern
int strcasecmp_l (const
char *__s1, const
char *__s2,
locale_t __loc)
1588 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
1589extern
int strncasecmp_l (const
char *__s1, const
char *__s2,
1591 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));
1593extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
void
1594__attribute__ ((__nothrow__ , __leaf__)) bcopy (const
void *__src,
void *__dest,
size_t __len)
1596 (void) __builtin___memmove_chk (__dest, __src, __len,
1597 __builtin_object_size (__dest, 0));
1599extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
void
1600__attribute__ ((__nothrow__ , __leaf__)) bzero (
void *__dest,
size_t __len)
1602 (void) __builtin___memset_chk (__dest,
'\0', __len,
1603 __builtin_object_size (__dest, 0));
1605extern void explicit_bzero (
void *__s,
size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)))
1606 __attribute__ ((__access__ (__write_only__, 1, 2)));
1607extern
char *strsep (
char **__restrict __stringp,
1608 const
char *__restrict __delim)
1609 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1610extern
char *strsignal (
int __sig) __attribute__ ((__nothrow__ , __leaf__));
1611extern const
char *sigabbrev_np (
int __sig) __attribute__ ((__nothrow__ , __leaf__));
1612extern const
char *sigdescr_np (
int __sig) __attribute__ ((__nothrow__ , __leaf__));
1613extern
char *__stpcpy (
char *__restrict __dest, const
char *__restrict __src)
1614 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1615extern
char *stpcpy (
char *__restrict __dest, const
char *__restrict __src)
1616 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1617extern
char *__stpncpy (
char *__restrict __dest,
1618 const
char *__restrict __src,
size_t __n)
1619 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1620extern
char *stpncpy (
char *__restrict __dest,
1621 const
char *__restrict __src,
size_t __n)
1622 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1623extern
int strverscmp (const
char *__s1, const
char *__s2)
1624 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
1625extern
char *strfry (
char *__string) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1626extern
void *memfrob (
void *__s,
size_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)))
1627 __attribute__ ((__access__ (__read_write__, 1, 2)));
1628extern
char *basename (const
char *__filename) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1629extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
void *
1630__attribute__ ((__nothrow__ , __leaf__)) memcpy (
void *__restrict __dest, const
void *__restrict __src,
size_t __len)
1632 return __builtin___memcpy_chk (__dest, __src, __len,
1633 __builtin_object_size (__dest, 0));
1635extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
void *
1636__attribute__ ((__nothrow__ , __leaf__)) memmove (
void *__dest,
const void *__src,
size_t __len)
1638 return __builtin___memmove_chk (__dest, __src, __len,
1639 __builtin_object_size (__dest, 0));
1641extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
void *
1642__attribute__ ((__nothrow__ , __leaf__)) mempcpy (
void *__restrict __dest,
const void *__restrict __src,
size_t __len)
1644 return __builtin___mempcpy_chk (__dest, __src, __len,
1645 __builtin_object_size (__dest, 0));
1647extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
void *
1648__attribute__ ((__nothrow__ , __leaf__)) memset (
void *__dest,
int __ch,
size_t __len)
1650 return __builtin___memset_chk (__dest, __ch, __len,
1651 __builtin_object_size (__dest, 0));
1653void __explicit_bzero_chk (
void *__dest,
size_t __len,
size_t __destlen)
1654 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2)));
1655extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
void
1656__attribute__ ((__nothrow__ , __leaf__)) explicit_bzero (
void *__dest,
size_t __len)
1658 __explicit_bzero_chk (__dest, __len, __builtin_object_size (__dest, 0));
1660extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
char *
1661__attribute__ ((__nothrow__ , __leaf__)) strcpy (
char *__restrict __dest,
const char *__restrict __src)
1663 return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
1665extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
char *
1666__attribute__ ((__nothrow__ , __leaf__)) stpcpy (
char *__restrict __dest,
const char *__restrict __src)
1668 return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
1670extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
char *
1671__attribute__ ((__nothrow__ , __leaf__)) strncpy (
char *__restrict __dest,
const char *__restrict __src,
size_t __len)
1673 return __builtin___strncpy_chk (__dest, __src, __len,
1674 __builtin_object_size (__dest, 2 > 1));
1676extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
char *
1677__attribute__ ((__nothrow__ , __leaf__)) stpncpy (
char *__dest,
const char *__src,
size_t __n)
1679 return __builtin___stpncpy_chk (__dest, __src, __n,
1680 __builtin_object_size (__dest, 2 > 1));
1682extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
char *
1683__attribute__ ((__nothrow__ , __leaf__)) strcat (
char *__restrict __dest,
const char *__restrict __src)
1685 return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
1687extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
char *
1688__attribute__ ((__nothrow__ , __leaf__)) strncat (
char *__restrict __dest,
const char *__restrict __src,
size_t __len)
1690 return __builtin___strncat_chk (__dest, __src, __len,
1691 __builtin_object_size (__dest, 2 > 1));
1694typedef __uint8_t uint8_t;
1695typedef __uint16_t uint16_t;
1696typedef __uint32_t uint32_t;
1697typedef __uint64_t uint64_t;
1698typedef __int_least8_t int_least8_t;
1699typedef __int_least16_t int_least16_t;
1700typedef __int_least32_t int_least32_t;
1701typedef __int_least64_t int_least64_t;
1702typedef __uint_least8_t uint_least8_t;
1703typedef __uint_least16_t uint_least16_t;
1704typedef __uint_least32_t uint_least32_t;
1705typedef __uint_least64_t uint_least64_t;
1706typedef signed char int_fast8_t;
1707typedef long int int_fast16_t;
1708typedef long int int_fast32_t;
1709typedef long int int_fast64_t;
1710typedef unsigned char uint_fast8_t;
1711typedef unsigned long int uint_fast16_t;
1712typedef unsigned long int uint_fast32_t;
1713typedef unsigned long int uint_fast64_t;
1714typedef long int intptr_t;
1715typedef unsigned long int uintptr_t;
1716typedef __intmax_t intmax_t;
1717typedef __uintmax_t uintmax_t;
1718typedef int __gwchar_t;
1725extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
1726extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom)
1727 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
1728extern intmax_t strtoimax (
const char *__restrict __nptr,
1729 char **__restrict __endptr,
int __base) __attribute__ ((__nothrow__ , __leaf__));
1730extern uintmax_t strtoumax (
const char *__restrict __nptr,
1731 char ** __restrict __endptr,
int __base) __attribute__ ((__nothrow__ , __leaf__));
1732extern intmax_t wcstoimax (
const __gwchar_t *__restrict __nptr,
1733 __gwchar_t **__restrict __endptr,
int __base)
1734 __attribute__ ((__nothrow__ , __leaf__));
1735extern uintmax_t wcstoumax (
const __gwchar_t *__restrict __nptr,
1736 __gwchar_t ** __restrict __endptr,
int __base)
1737 __attribute__ ((__nothrow__ , __leaf__));
1740typedef __socklen_t socklen_t;
1741extern int access (
const char *__name,
int __type) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1742extern int euidaccess (
const char *__name,
int __type)
1743 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1744extern int eaccess (
const char *__name,
int __type)
1745 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
1746extern int execveat (
int __fd,
const char *__path,
char *
const __argv[],
1747 char *
const __envp[],
int __flags)
1748 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
1749extern int faccessat (
int __fd,
const char *__file,
int __type,
int __flag)
1750 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
1751extern __off_t lseek (
int __fd, __off_t __offset,
int __whence) __attribute__ ((__nothrow__ , __leaf__));
1752extern __off64_t lseek64 (
int __fd, __off64_t __offset,
int __whence)
1753 __attribute__ ((__nothrow__ , __leaf__));
1754extern
int close (
int __fd);
1755extern
void closefrom (
int __lowfd) __attribute__ ((__nothrow__ , __leaf__));
1756extern ssize_t read (
int __fd,
void *__buf,
size_t __nbytes) __attribute__ ((__warn_unused_result__))
1757 __attribute__ ((__access__ (__write_only__, 2, 3)));
1758extern ssize_t write (
int __fd, const
void *__buf,
size_t __n) __attribute__ ((__warn_unused_result__))
1759 __attribute__ ((__access__ (__read_only__, 2, 3)));
1760extern ssize_t pread (
int __fd,
void *__buf,
size_t __nbytes,
1761 __off_t __offset) __attribute__ ((__warn_unused_result__))
1762 __attribute__ ((__access__ (__write_only__, 2, 3)));
1763extern ssize_t pwrite (
int __fd, const
void *__buf,
size_t __n,
1764 __off_t __offset) __attribute__ ((__warn_unused_result__))
1765 __attribute__ ((__access__ (__read_only__, 2, 3)));
1766extern ssize_t pread64 (
int __fd,
void *__buf,
size_t __nbytes,
1767 __off64_t __offset) __attribute__ ((__warn_unused_result__))
1768 __attribute__ ((__access__ (__write_only__, 2, 3)));
1769extern ssize_t pwrite64 (
int __fd, const
void *__buf,
size_t __n,
1770 __off64_t __offset) __attribute__ ((__warn_unused_result__))
1771 __attribute__ ((__access__ (__read_only__, 2, 3)));
1772extern
int pipe (
int __pipedes[2]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
1773extern
int pipe2 (
int __pipedes[2],
int __flags) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
1774extern
unsigned int alarm (
unsigned int __seconds) __attribute__ ((__nothrow__ , __leaf__));
1775extern
unsigned int sleep (
unsigned int __seconds);
1776extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
1777 __attribute__ ((__nothrow__ , __leaf__));
1778extern
int usleep (__useconds_t __useconds);
1779extern
int pause (
void);
1780extern
int chown (const
char *__file, __uid_t __owner, __gid_t __group)
1781 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1782extern
int fchown (
int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
1783extern
int lchown (const
char *__file, __uid_t __owner, __gid_t __group)
1784 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1785extern
int fchownat (
int __fd, const
char *__file, __uid_t __owner,
1786 __gid_t __group,
int __flag)
1787 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
1788extern
int chdir (const
char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
1789extern
int fchdir (
int __fd) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
1790extern
char *getcwd (
char *__buf,
size_t __size) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
1791extern
char *get_current_dir_name (
void) __attribute__ ((__nothrow__ , __leaf__));
1792extern
char *getwd (
char *__buf)
1793 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__))
1794 __attribute__ ((__access__ (__write_only__, 1)));
1795extern
int dup (
int __fd) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
1796extern
int dup2 (
int __fd,
int __fd2) __attribute__ ((__nothrow__ , __leaf__));
1797extern
int dup3 (
int __fd,
int __fd2,
int __flags) __attribute__ ((__nothrow__ , __leaf__));
1798extern
char **__environ;
1799extern
char **environ;
1800extern
int execve (const
char *__path,
char *const __argv[],
1801 char *const __envp[]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1802extern
int fexecve (
int __fd,
char *const __argv[],
char *const __envp[])
1803 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
1804extern
int execv (const
char *__path,
char *const __argv[])
1805 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1806extern
int execle (const
char *__path, const
char *__arg, ...)
1807 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1808extern
int execl (const
char *__path, const
char *__arg, ...)
1809 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1810extern
int execvp (const
char *__file,
char *const __argv[])
1811 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1812extern
int execlp (const
char *__file, const
char *__arg, ...)
1813 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1814extern
int execvpe (const
char *__file,
char *const __argv[],
1815 char *const __envp[])
1816 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
1817extern
int nice (
int __inc) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
1818extern
void _exit (
int __status) __attribute__ ((__noreturn__));
1827 _PC_CHOWN_RESTRICTED,
1835 _PC_REC_INCR_XFER_SIZE,
1836 _PC_REC_MAX_XFER_SIZE,
1837 _PC_REC_MIN_XFER_SIZE,
1854 _SC_REALTIME_SIGNALS,
1855 _SC_PRIORITY_SCHEDULING,
1857 _SC_ASYNCHRONOUS_IO,
1859 _SC_SYNCHRONIZED_IO,
1864 _SC_MEMORY_PROTECTION,
1865 _SC_MESSAGE_PASSING,
1867 _SC_SHARED_MEMORY_OBJECTS,
1870 _SC_AIO_PRIO_DELTA_MAX,
1885 _SC_COLL_WEIGHTS_MAX,
1886 _SC_EQUIV_CLASS_MAX,
1890 _SC_CHARCLASS_NAME_MAX,
1906 _SC_IOV_MAX = _SC_UIO_MAXIOV,
1907 _SC_PII_INTERNET_STREAM,
1908 _SC_PII_INTERNET_DGRAM,
1914 _SC_THREAD_SAFE_FUNCTIONS,
1915 _SC_GETGR_R_SIZE_MAX,
1916 _SC_GETPW_R_SIZE_MAX,
1919 _SC_THREAD_DESTRUCTOR_ITERATIONS,
1920 _SC_THREAD_KEYS_MAX,
1921 _SC_THREAD_STACK_MIN,
1922 _SC_THREAD_THREADS_MAX,
1923 _SC_THREAD_ATTR_STACKADDR,
1924 _SC_THREAD_ATTR_STACKSIZE,
1925 _SC_THREAD_PRIORITY_SCHEDULING,
1926 _SC_THREAD_PRIO_INHERIT,
1927 _SC_THREAD_PRIO_PROTECT,
1928 _SC_THREAD_PROCESS_SHARED,
1929 _SC_NPROCESSORS_CONF,
1930 _SC_NPROCESSORS_ONLN,
1936 _SC_XOPEN_XCU_VERSION,
1971 _SC_XBS5_ILP32_OFF32,
1972 _SC_XBS5_ILP32_OFFBIG,
1973 _SC_XBS5_LP64_OFF64,
1974 _SC_XBS5_LPBIG_OFFBIG,
1977 _SC_XOPEN_REALTIME_THREADS,
1982 _SC_C_LANG_SUPPORT_R,
1983 _SC_CLOCK_SELECTION,
1987 _SC_DEVICE_SPECIFIC,
1988 _SC_DEVICE_SPECIFIC_R,
1992 _SC_FILE_ATTRIBUTES,
1995 _SC_MONOTONIC_CLOCK,
1999 _SC_READER_WRITER_LOCKS,
2006 _SC_SPORADIC_SERVER,
2007 _SC_THREAD_SPORADIC_SERVER,
2008 _SC_SYSTEM_DATABASE,
2009 _SC_SYSTEM_DATABASE_R,
2011 _SC_TYPED_MEMORY_OBJECTS,
2015 _SC_2_PBS_ACCOUNTING,
2021 _SC_2_PBS_CHECKPOINT,
2023 _SC_V6_ILP32_OFFBIG,
2025 _SC_V6_LPBIG_OFFBIG,
2028 _SC_TRACE_EVENT_FILTER,
2031 _SC_LEVEL1_ICACHE_SIZE,
2032 _SC_LEVEL1_ICACHE_ASSOC,
2033 _SC_LEVEL1_ICACHE_LINESIZE,
2034 _SC_LEVEL1_DCACHE_SIZE,
2035 _SC_LEVEL1_DCACHE_ASSOC,
2036 _SC_LEVEL1_DCACHE_LINESIZE,
2037 _SC_LEVEL2_CACHE_SIZE,
2038 _SC_LEVEL2_CACHE_ASSOC,
2039 _SC_LEVEL2_CACHE_LINESIZE,
2040 _SC_LEVEL3_CACHE_SIZE,
2041 _SC_LEVEL3_CACHE_ASSOC,
2042 _SC_LEVEL3_CACHE_LINESIZE,
2043 _SC_LEVEL4_CACHE_SIZE,
2044 _SC_LEVEL4_CACHE_ASSOC,
2045 _SC_LEVEL4_CACHE_LINESIZE,
2046 _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
2049 _SC_V7_ILP32_OFFBIG,
2051 _SC_V7_LPBIG_OFFBIG,
2053 _SC_TRACE_EVENT_NAME_MAX,
2056 _SC_TRACE_USER_EVENT_MAX,
2058 _SC_THREAD_ROBUST_PRIO_INHERIT,
2059 _SC_THREAD_ROBUST_PRIO_PROTECT,
2066 _CS_V6_WIDTH_RESTRICTED_ENVS,
2067 _CS_GNU_LIBC_VERSION,
2068 _CS_GNU_LIBPTHREAD_VERSION,
2069 _CS_V5_WIDTH_RESTRICTED_ENVS,
2070 _CS_V7_WIDTH_RESTRICTED_ENVS,
2071 _CS_LFS_CFLAGS = 1000,
2078 _CS_LFS64_LINTFLAGS,
2079 _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
2080 _CS_XBS5_ILP32_OFF32_LDFLAGS,
2081 _CS_XBS5_ILP32_OFF32_LIBS,
2082 _CS_XBS5_ILP32_OFF32_LINTFLAGS,
2083 _CS_XBS5_ILP32_OFFBIG_CFLAGS,
2084 _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
2085 _CS_XBS5_ILP32_OFFBIG_LIBS,
2086 _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
2087 _CS_XBS5_LP64_OFF64_CFLAGS,
2088 _CS_XBS5_LP64_OFF64_LDFLAGS,
2089 _CS_XBS5_LP64_OFF64_LIBS,
2090 _CS_XBS5_LP64_OFF64_LINTFLAGS,
2091 _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
2092 _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
2093 _CS_XBS5_LPBIG_OFFBIG_LIBS,
2094 _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
2095 _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
2096 _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
2097 _CS_POSIX_V6_ILP32_OFF32_LIBS,
2098 _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
2099 _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
2100 _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
2101 _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
2102 _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
2103 _CS_POSIX_V6_LP64_OFF64_CFLAGS,
2104 _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
2105 _CS_POSIX_V6_LP64_OFF64_LIBS,
2106 _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
2107 _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
2108 _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
2109 _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
2110 _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
2111 _CS_POSIX_V7_ILP32_OFF32_CFLAGS,
2112 _CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
2113 _CS_POSIX_V7_ILP32_OFF32_LIBS,
2114 _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,
2115 _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
2116 _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
2117 _CS_POSIX_V7_ILP32_OFFBIG_LIBS,
2118 _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,
2119 _CS_POSIX_V7_LP64_OFF64_CFLAGS,
2120 _CS_POSIX_V7_LP64_OFF64_LDFLAGS,
2121 _CS_POSIX_V7_LP64_OFF64_LIBS,
2122 _CS_POSIX_V7_LP64_OFF64_LINTFLAGS,
2123 _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
2124 _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
2125 _CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
2126 _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS,
2130extern long int pathconf (
const char *__path,
int __name)
2131 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
2132extern long int fpathconf (
int __fd,
int __name) __attribute__ ((__nothrow__ , __leaf__));
2133extern long int sysconf (
int __name) __attribute__ ((__nothrow__ , __leaf__));
2134extern size_t confstr (
int __name,
char *__buf,
size_t __len) __attribute__ ((__nothrow__ , __leaf__))
2135 __attribute__ ((__access__ (__write_only__, 2, 3)));
2136extern __pid_t getpid (
void) __attribute__ ((__nothrow__ , __leaf__));
2137extern __pid_t getppid (
void) __attribute__ ((__nothrow__ , __leaf__));
2138extern __pid_t getpgrp (
void) __attribute__ ((__nothrow__ , __leaf__));
2139extern __pid_t __getpgid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__));
2140extern __pid_t getpgid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__));
2141extern int setpgid (__pid_t __pid, __pid_t __pgid) __attribute__ ((__nothrow__ , __leaf__));
2142extern int setpgrp (
void) __attribute__ ((__nothrow__ , __leaf__));
2143extern __pid_t setsid (
void) __attribute__ ((__nothrow__ , __leaf__));
2144extern __pid_t getsid (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__));
2145extern __uid_t getuid (
void) __attribute__ ((__nothrow__ , __leaf__));
2146extern __uid_t geteuid (
void) __attribute__ ((__nothrow__ , __leaf__));
2147extern __gid_t getgid (
void) __attribute__ ((__nothrow__ , __leaf__));
2148extern __gid_t getegid (
void) __attribute__ ((__nothrow__ , __leaf__));
2149extern int getgroups (
int __size, __gid_t __list[]) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__))
2150 __attribute__ ((__access__ (__write_only__, 2, 1)));
2151extern int group_member (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__));
2152extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
2153extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
2154extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
2155extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
2156extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
2157extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
2158extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
2159 __attribute__ ((__nothrow__ , __leaf__));
2160extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
2161 __attribute__ ((__nothrow__ , __leaf__));
2162extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
2163 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
2164extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
2165 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
2166extern __pid_t fork (
void) __attribute__ ((__nothrow__));
2167extern __pid_t vfork (
void) __attribute__ ((__nothrow__ , __leaf__));
2168extern __pid_t _Fork (
void) __attribute__ ((__nothrow__ , __leaf__));
2169extern char *ttyname (
int __fd) __attribute__ ((__nothrow__ , __leaf__));
2170extern int ttyname_r (
int __fd,
char *__buf,
size_t __buflen)
2171 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__))
2172 __attribute__ ((__access__ (__write_only__, 2, 3)));
2173extern
int isatty (
int __fd) __attribute__ ((__nothrow__ , __leaf__));
2174extern
int ttyslot (
void) __attribute__ ((__nothrow__ , __leaf__));
2175extern
int link (const
char *__from, const
char *__to)
2176 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
2177extern
int linkat (
int __fromfd, const
char *__from,
int __tofd,
2178 const
char *__to,
int __flags)
2179 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__));
2180extern
int symlink (const
char *__from, const
char *__to)
2181 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
2182extern ssize_t readlink (const
char *__restrict __path,
2183 char *__restrict __buf,
size_t __len)
2184 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__))
2185 __attribute__ ((__access__ (__write_only__, 2, 3)));
2186extern
int symlinkat (const
char *__from,
int __tofd,
2187 const
char *__to) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
2188extern ssize_t readlinkat (
int __fd, const
char *__restrict __path,
2189 char *__restrict __buf,
size_t __len)
2190 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__))
2191 __attribute__ ((__access__ (__write_only__, 3, 4)));
2192extern
int unlink (const
char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
2193extern
int unlinkat (
int __fd, const
char *__name,
int __flag)
2194 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
2195extern
int rmdir (const
char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
2196extern __pid_t tcgetpgrp (
int __fd) __attribute__ ((__nothrow__ , __leaf__));
2197extern
int tcsetpgrp (
int __fd, __pid_t __pgrp_id) __attribute__ ((__nothrow__ , __leaf__));
2198extern
char *getlogin (
void);
2199extern
int getlogin_r (
char *__name,
size_t __name_len) __attribute__ ((__nonnull__ (1)))
2200 __attribute__ ((__access__ (__write_only__, 1, 2)));
2201extern
int setlogin (const
char *__name) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
2207extern
int getopt (
int ___argc,
char *const *___argv, const
char *__shortopts)
2208 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
2212extern
int gethostname (
char *__name,
size_t __len) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)))
2213 __attribute__ ((__access__ (__write_only__, 1, 2)));
2214extern
int sethostname (const
char *__name,
size_t __len)
2215 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 1, 2)));
2216extern
int sethostid (
long int __id) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
2217extern
int getdomainname (
char *__name,
size_t __len)
2218 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__))
2219 __attribute__ ((__access__ (__write_only__, 1, 2)));
2220extern
int setdomainname (const
char *__name,
size_t __len)
2221 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__read_only__, 1, 2)));
2222extern
int vhangup (
void) __attribute__ ((__nothrow__ , __leaf__));
2223extern
int revoke (const
char *__file) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2224extern
int profil (
unsigned short int *__sample_buffer,
size_t __size,
2225 size_t __offset,
unsigned int __scale)
2226 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
2227extern
int acct (const
char *__name) __attribute__ ((__nothrow__ , __leaf__));
2228extern
char *getusershell (
void) __attribute__ ((__nothrow__ , __leaf__));
2229extern
void endusershell (
void) __attribute__ ((__nothrow__ , __leaf__));
2230extern
void setusershell (
void) __attribute__ ((__nothrow__ , __leaf__));
2231extern
int daemon (
int __nochdir,
int __noclose) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
2232extern
int chroot (const
char *__path) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2233extern
char *getpass (const
char *__prompt) __attribute__ ((__nonnull__ (1)));
2234extern
int fsync (
int __fd);
2235extern
int syncfs (
int __fd) __attribute__ ((__nothrow__ , __leaf__));
2236extern
long int gethostid (
void);
2237extern
void sync (
void) __attribute__ ((__nothrow__ , __leaf__));
2238extern
int getpagesize (
void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2239extern
int getdtablesize (
void) __attribute__ ((__nothrow__ , __leaf__));
2240extern
int truncate (const
char *__file, __off_t __length)
2241 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2242extern
int truncate64 (const
char *__file, __off64_t __length)
2243 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
2244extern
int ftruncate (
int __fd, __off_t __length) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
2245extern
int ftruncate64 (
int __fd, __off64_t __length) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
2246extern
int brk (
void *__addr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
2247extern
void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__ , __leaf__));
2248extern
long int syscall (
long int __sysno, ...) __attribute__ ((__nothrow__ , __leaf__));
2249extern
int lockf (
int __fd,
int __cmd, __off_t __len) __attribute__ ((__warn_unused_result__));
2250extern
int lockf64 (
int __fd,
int __cmd, __off64_t __len) __attribute__ ((__warn_unused_result__));
2251ssize_t copy_file_range (
int __infd, __off64_t *__pinoff,
2252 int __outfd, __off64_t *__poutoff,
2253 size_t __length,
unsigned int __flags);
2254extern
int fdatasync (
int __fildes);
2255extern
char *crypt (const
char *__key, const
char *__salt)
2256 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
2257extern
void swab (const
void *__restrict __from,
void *__restrict __to,
2258 ssize_t __n) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)))
2259 __attribute__ ((__access__ (__read_only__, 1, 3)))
2260 __attribute__ ((__access__ (__write_only__, 2, 3)));
2261int getentropy (
void *__buffer,
size_t __length) __attribute__ ((__warn_unused_result__))
2262 __attribute__ ((__access__ (__write_only__, 1, 2)));
2263extern
int close_range (
unsigned int __fd,
unsigned int __max_fd,
2264 int __flags) __attribute__ ((__nothrow__ , __leaf__));
2265extern ssize_t __read_chk (
int __fd,
void *__buf,
size_t __nbytes,
2267 __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3)));
2268extern ssize_t __read_alias (
int __fd,
void *__buf,
size_t __nbytes) __asm__ ("" "read")
2269 __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3)));
2270extern ssize_t __read_chk_warn (
int __fd,
void *__buf,
size_t __nbytes,
size_t __buflen) __asm__ ("" "__read_chk")
2271 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer")));
2272extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
2273read (
int __fd,
void *__buf,
size_t __nbytes)
2275 return ((((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((
long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (
sizeof (
char)))) && (((
long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (
sizeof (
char)))) ? __read_alias (__fd, __buf, __nbytes) : ((((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((
long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (
sizeof (
char)))) && !(((
long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (
sizeof (
char)))) ? __read_chk_warn (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0)) : __read_chk (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0))));
2277extern ssize_t __pread_chk (
int __fd,
void *__buf,
size_t __nbytes,
2278 __off_t __offset,
size_t __bufsize)
2279 __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3)));
2280extern ssize_t __pread64_chk (
int __fd,
void *__buf,
size_t __nbytes,
2281 __off64_t __offset,
size_t __bufsize)
2282 __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3)));
2283extern ssize_t __pread_alias (
int __fd,
void *__buf,
size_t __nbytes, __off_t __offset) __asm__ (
"" "pread")
2284 __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3)));
2285extern ssize_t __pread64_alias (
int __fd,
void *__buf,
size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64")
2286 __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3)));
2287extern ssize_t __pread_chk_warn (
int __fd,
void *__buf,
size_t __nbytes, __off_t __offset,
size_t __bufsize) __asm__ ("" "__pread_chk")
2288 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer")));
2289extern ssize_t __pread64_chk_warn (
int __fd,
void *__buf,
size_t __nbytes, __off64_t __offset,
size_t __bufsize) __asm__ ("" "__pread64_chk")
2290 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer")));
2291extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
2292pread (
int __fd,
void *__buf,
size_t __nbytes, __off_t __offset)
2294 return ((((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((
long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (
sizeof (
char)))) && (((
long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (
sizeof (
char)))) ? __pread_alias (__fd, __buf, __nbytes, __offset) : ((((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((
long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (
sizeof (
char)))) && !(((
long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (
sizeof (
char)))) ? __pread_chk_warn (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)) : __pread_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0))));
2296extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
2297pread64 (
int __fd,
void *__buf,
size_t __nbytes, __off64_t __offset)
2299 return ((((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((
long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (
sizeof (
char)))) && (((
long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (
sizeof (
char)))) ? __pread64_alias (__fd, __buf, __nbytes, __offset) : ((((__typeof (__nbytes)) 0 < (__typeof (__nbytes)) -1 || (__builtin_constant_p (__nbytes) && (__nbytes) > 0)) && __builtin_constant_p ((((
long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (
sizeof (
char)))) && !(((
long unsigned int) (__nbytes)) <= (__builtin_object_size (__buf, 0)) / (
sizeof (
char)))) ? __pread64_chk_warn (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0)) : __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0))));
2301extern ssize_t __readlink_chk (
const char *__restrict __path,
2302 char *__restrict __buf,
size_t __len,
2304 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3)));
2305extern ssize_t __readlink_alias (const
char *__restrict __path,
char *__restrict __buf,
size_t __len) __asm__ ("" "readlink") __attribute__ ((__nothrow__ , __leaf__))
2306 __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 3)));
2307extern ssize_t __readlink_chk_warn (const
char *__restrict __path,
char *__restrict __buf,
size_t __len,
size_t __buflen) __asm__ ("" "__readlink_chk") __attribute__ ((__nothrow__ , __leaf__))
2308 __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer")));
2309extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t
2310__attribute__ ((__nothrow__ , __leaf__)) readlink (const
char *__restrict __path,
char *__restrict __buf,
size_t __len)
2312 return ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((
long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && (((
long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __readlink_alias (__path, __buf, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((
long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && !(((
long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __readlink_chk_warn (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1)) : __readlink_chk (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1))));
2314extern ssize_t __readlinkat_chk (
int __fd,
const char *__restrict __path,
2315 char *__restrict __buf,
size_t __len,
2317 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 3, 4)));
2318extern ssize_t __readlinkat_alias (
int __fd, const
char *__restrict __path,
char *__restrict __buf,
size_t __len) __asm__ ("" "readlinkat") __attribute__ ((__nothrow__ , __leaf__))
2319 __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 3, 4)));
2320extern ssize_t __readlinkat_chk_warn (
int __fd, const
char *__restrict __path,
char *__restrict __buf,
size_t __len,
size_t __buflen) __asm__ ("" "__readlinkat_chk") __attribute__ ((__nothrow__ , __leaf__))
2321 __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer")));
2322extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t
2323__attribute__ ((__nothrow__ , __leaf__)) readlinkat (
int __fd, const
char *__restrict __path,
char *__restrict __buf,
size_t __len)
2325 return ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((
long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && (((
long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __readlinkat_alias (__fd, __path, __buf, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((
long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && !(((
long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __readlinkat_chk_warn (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1)) : __readlinkat_chk (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1))));
2327extern char *__getcwd_chk (
char *__buf,
size_t __size,
size_t __buflen)
2328 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
2329extern char *__getcwd_alias (
char *__buf,
size_t __size) __asm__ (
"" "getcwd") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
2330extern
char *__getcwd_chk_warn (
char *__buf,
size_t __size,
size_t __buflen) __asm__ ("" "__getcwd_chk") __attribute__ ((__nothrow__ , __leaf__))
2331 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer")));
2332extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__))
char *
2333__attribute__ ((__nothrow__ , __leaf__)) getcwd (
char *__buf,
size_t __size)
2335 return ((((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((
long unsigned int) (__size)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && (((
long unsigned int) (__size)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __getcwd_alias (__buf, __size) : ((((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((
long unsigned int) (__size)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && !(((
long unsigned int) (__size)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __getcwd_chk_warn (__buf, __size, __builtin_object_size (__buf, 2 > 1)) : __getcwd_chk (__buf, __size, __builtin_object_size (__buf, 2 > 1))));
2337extern char *__getwd_chk (
char *__buf,
size_t buflen)
2338 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2)));
2339extern
char *__getwd_warn (
char *__buf) __asm__ ("" "getwd") __attribute__ ((__nothrow__ , __leaf__))
2340 __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size")));
2341extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__))
char *
2342__attribute__ ((__nothrow__ , __leaf__)) getwd (
char *__buf)
2344 if (__builtin_object_size (__buf, 2 > 1) != (
size_t) -1)
2345 return __getwd_chk (__buf, __builtin_object_size (__buf, 2 > 1));
2346 return __getwd_warn (__buf);
2348extern size_t __confstr_chk (
int __name,
char *__buf,
size_t __len,
2349 size_t __buflen) __attribute__ ((__nothrow__ , __leaf__))
2350 __attribute__ ((__access__ (__write_only__, 2, 3)));
2351extern size_t __confstr_alias (
int __name,
char *__buf,
size_t __len) __asm__ (
"" "confstr") __attribute__ ((__nothrow__ , __leaf__))
2352 __attribute__ ((__access__ (__write_only__, 2, 3)));
2353extern
size_t __confstr_chk_warn (
int __name,
char *__buf,
size_t __len,
size_t __buflen) __asm__ ("" "__confstr_chk") __attribute__ ((__nothrow__ , __leaf__))
2354 __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer")));
2355extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
size_t
2356__attribute__ ((__nothrow__ , __leaf__)) confstr (
int __name,
char *__buf,
size_t __len)
2358 return ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((
long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && (((
long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __confstr_alias (__name, __buf, __len) : ((((__typeof (__len)) 0 < (__typeof (__len)) -1 || (__builtin_constant_p (__len) && (__len) > 0)) && __builtin_constant_p ((((
long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && !(((
long unsigned int) (__len)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __confstr_chk_warn (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1)) : __confstr_chk (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1))));
2360extern int __getgroups_chk (
int __size, __gid_t __list[],
size_t __listlen)
2361 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 1)));
2362extern int __getgroups_alias (
int __size, __gid_t __list[]) __asm__ (
"" "getgroups") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 2, 1)));
2363extern
int __getgroups_chk_warn (
int __size, __gid_t __list[],
size_t __listlen) __asm__ ("" "__getgroups_chk") __attribute__ ((__nothrow__ , __leaf__))
2364 __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer")));
2365extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
2366__attribute__ ((__nothrow__ , __leaf__)) getgroups (
int __size, __gid_t __list[])
2368 return ((((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((
long unsigned int) (__size)) <= (__builtin_object_size (__list, 2 > 1)) / (
sizeof (__gid_t)))) && (((
long unsigned int) (__size)) <= (__builtin_object_size (__list, 2 > 1)) / (
sizeof (__gid_t)))) ? __getgroups_alias (__size, __list) : ((((__typeof (__size)) 0 < (__typeof (__size)) -1 || (__builtin_constant_p (__size) && (__size) > 0)) && __builtin_constant_p ((((
long unsigned int) (__size)) <= (__builtin_object_size (__list, 2 > 1)) / (
sizeof (__gid_t)))) && !(((
long unsigned int) (__size)) <= (__builtin_object_size (__list, 2 > 1)) / (
sizeof (__gid_t)))) ? __getgroups_chk_warn (__size, __list, __builtin_object_size (__list, 2 > 1)) : __getgroups_chk (__size, __list, __builtin_object_size (__list, 2 > 1))));
2370extern int __ttyname_r_chk (
int __fd,
char *__buf,
size_t __buflen,
2371 size_t __nreal) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)))
2372 __attribute__ ((__access__ (__write_only__, 2, 3)));
2373extern
int __ttyname_r_alias (
int __fd,
char *__buf,
size_t __buflen) __asm__ ("" "ttyname_r") __attribute__ ((__nothrow__ , __leaf__))
2374 __attribute__ ((__nonnull__ (2)));
2375extern
int __ttyname_r_chk_warn (
int __fd,
char *__buf,
size_t __buflen,
size_t __nreal) __asm__ ("" "__ttyname_r_chk") __attribute__ ((__nothrow__ , __leaf__))
2376 __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer")));
2377extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
2378__attribute__ ((__nothrow__ , __leaf__)) ttyname_r (
int __fd,
char *__buf,
size_t __buflen)
2380 return ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && (((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __ttyname_r_alias (__fd, __buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && !(((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __ttyname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1))));
2382extern int __getlogin_r_chk (
char *__buf,
size_t __buflen,
size_t __nreal)
2383 __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2)));
2384extern
int __getlogin_r_alias (
char *__buf,
size_t __buflen) __asm__ ("" "getlogin_r") __attribute__ ((__nonnull__ (1)));
2385extern
int __getlogin_r_chk_warn (
char *__buf,
size_t __buflen,
size_t __nreal) __asm__ ("" "__getlogin_r_chk")
2386 __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer")));
2387extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
2388getlogin_r (
char *__buf,
size_t __buflen)
2390 return ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && (((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __getlogin_r_alias (__buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && !(((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __getlogin_r_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __getlogin_r_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1))));
2392extern int __gethostname_chk (
char *__buf,
size_t __buflen,
size_t __nreal)
2393 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2)));
2394extern
int __gethostname_alias (
char *__buf,
size_t __buflen) __asm__ ("" "gethostname") __attribute__ ((__nothrow__ , __leaf__))
2395 __attribute__ ((__nonnull__ (1))) __attribute__ ((__access__ (__write_only__, 1, 2)));
2396extern
int __gethostname_chk_warn (
char *__buf,
size_t __buflen,
size_t __nreal) __asm__ ("" "__gethostname_chk") __attribute__ ((__nothrow__ , __leaf__))
2397 __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer")));
2398extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
2399__attribute__ ((__nothrow__ , __leaf__)) gethostname (
char *__buf,
size_t __buflen)
2401 return ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && (((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __gethostname_alias (__buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && !(((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __gethostname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __gethostname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1))));
2403extern int __getdomainname_chk (
char *__buf,
size_t __buflen,
size_t __nreal)
2404 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2)));
2405extern
int __getdomainname_alias (
char *__buf,
size_t __buflen) __asm__ ("" "getdomainname") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)))
2406 __attribute__ ((__warn_unused_result__)) __attribute__ ((__access__ (__write_only__, 1, 2)));
2407extern
int __getdomainname_chk_warn (
char *__buf,
size_t __buflen,
size_t __nreal) __asm__ ("" "__getdomainname_chk") __attribute__ ((__nothrow__ , __leaf__))
2408 __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer")));
2409extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__)) __attribute__ ((__artificial__))
int
2410__attribute__ ((__nothrow__ , __leaf__)) getdomainname (
char *__buf,
size_t __buflen)
2412 return ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && (((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __getdomainname_alias (__buf, __buflen) : ((((__typeof (__buflen)) 0 < (__typeof (__buflen)) -1 || (__builtin_constant_p (__buflen) && (__buflen) > 0)) && __builtin_constant_p ((((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) && !(((
long unsigned int) (__buflen)) <= (__builtin_object_size (__buf, 2 > 1)) / (
sizeof (
char)))) ? __getdomainname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1)) : __getdomainname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1))));
2414extern __pid_t gettid (
void) __attribute__ ((__nothrow__ , __leaf__));
2419__attribute__((__malloc__))
2420__attribute__((__returns_nonnull__))
2421__attribute__((__alloc_size__ (1)))
2426__attribute__((__malloc__))
2427__attribute__((__returns_nonnull__))
2428__attribute__((__alloc_size__ (1,2)))
2433__attribute__((__malloc__))
2434__attribute__((__returns_nonnull__))
2435__attribute__((__alloc_size__ (1,2)))
2440__attribute__((__returns_nonnull__))
2441__attribute__((__alloc_size__ (2)))
2446__attribute__((__returns_nonnull__))
2447__attribute__((__alloc_size__ (2,3)))
2456#define RBIMPL_ATTR_COLD_H
2457#define RBIMPL_ATTR_COLD() __attribute__((__cold__))
2460__attribute__((__noreturn__))
2461__attribute__((__cold__))
2462void rb_assert_failure(
const char *file,
int line,
const char *name,
const char *expr);
2465#define COLDFUNC RBIMPL_ATTR_COLD()
2467typedef float float_t;
2468typedef double double_t;
2477 FP_INT_TONEARESTFROMZERO =
2482extern int __fpclassify (
double __value) __attribute__ ((__nothrow__ , __leaf__))
2483 __attribute__ ((__const__));
2484extern int __signbit (
double __value) __attribute__ ((__nothrow__ , __leaf__))
2485 __attribute__ ((__const__));
2486extern int __isinf (
double __value) __attribute__ ((__nothrow__ , __leaf__))
2487 __attribute__ ((__const__));
2488extern int __finite (
double __value) __attribute__ ((__nothrow__ , __leaf__))
2489 __attribute__ ((__const__));
2490extern int __isnan (
double __value) __attribute__ ((__nothrow__ , __leaf__))
2491 __attribute__ ((__const__));
2492extern int __iseqsig (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
2493extern int __issignaling (
double __value) __attribute__ ((__nothrow__ , __leaf__))
2494 __attribute__ ((__const__));
2495 extern double acos (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __acos (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2496 extern double asin (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __asin (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2497 extern double atan (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __atan (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2498 extern double atan2 (
double __y,
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __atan2 (
double __y,
double __x) __attribute__ ((__nothrow__ , __leaf__));
2499 extern double cos (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __cos (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2500 extern double sin (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __sin (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2501 extern double tan (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __tan (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2502 extern double cosh (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __cosh (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2503 extern double sinh (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __sinh (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2504 extern double tanh (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __tanh (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2505 extern void sincos (
double __x,
double *__sinx,
double *__cosx) __attribute__ ((__nothrow__ , __leaf__));
extern void __sincos (
double __x,
double *__sinx,
double *__cosx) __attribute__ ((__nothrow__ , __leaf__));
2506 extern double acosh (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __acosh (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2507 extern double asinh (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __asinh (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2508 extern double atanh (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __atanh (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2509 extern double exp (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __exp (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2510extern double frexp (
double __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern double __frexp (
double __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
2511extern double ldexp (
double __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern double __ldexp (
double __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
2512 extern double log (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __log (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2513 extern double log10 (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __log10 (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2514extern double modf (
double __x,
double *__iptr) __attribute__ ((__nothrow__ , __leaf__));
extern double __modf (
double __x,
double *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
2515 extern double exp10 (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __exp10 (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2516 extern double expm1 (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __expm1 (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2517 extern double log1p (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __log1p (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2518extern double logb (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __logb (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2519 extern double exp2 (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __exp2 (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2520 extern double log2 (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __log2 (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2521 extern double pow (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double __pow (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
2522extern double sqrt (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __sqrt (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2523 extern double hypot (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double __hypot (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
2524 extern double cbrt (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __cbrt (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2525extern double ceil (
double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __ceil (
double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2526extern double fabs (
double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __fabs (
double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2527extern double floor (
double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __floor (
double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2528extern double fmod (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double __fmod (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
2529extern int isinf (
double __value) __attribute__ ((__nothrow__ , __leaf__))
2530 __attribute__ ((__const__));
2531extern int finite (
double __value) __attribute__ ((__nothrow__ , __leaf__))
2532 __attribute__ ((__const__));
2533extern double drem (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double __drem (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
2534extern double significand (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __significand (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2535extern double copysign (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __copysign (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2536extern double nan (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
extern double __nan (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
2537extern int isnan (
double __value) __attribute__ ((__nothrow__ , __leaf__))
2538 __attribute__ ((__const__));
2539extern double j0 (
double) __attribute__ ((__nothrow__ , __leaf__));
extern double __j0 (
double) __attribute__ ((__nothrow__ , __leaf__));
2540extern double j1 (
double) __attribute__ ((__nothrow__ , __leaf__));
extern double __j1 (
double) __attribute__ ((__nothrow__ , __leaf__));
2541extern double jn (
int,
double) __attribute__ ((__nothrow__ , __leaf__));
extern double __jn (
int,
double) __attribute__ ((__nothrow__ , __leaf__));
2542extern double y0 (
double) __attribute__ ((__nothrow__ , __leaf__));
extern double __y0 (
double) __attribute__ ((__nothrow__ , __leaf__));
2543extern double y1 (
double) __attribute__ ((__nothrow__ , __leaf__));
extern double __y1 (
double) __attribute__ ((__nothrow__ , __leaf__));
2544extern double yn (
int,
double) __attribute__ ((__nothrow__ , __leaf__));
extern double __yn (
int,
double) __attribute__ ((__nothrow__ , __leaf__));
2545 extern double erf (
double) __attribute__ ((__nothrow__ , __leaf__));
extern double __erf (
double) __attribute__ ((__nothrow__ , __leaf__));
2546 extern double erfc (
double) __attribute__ ((__nothrow__ , __leaf__));
extern double __erfc (
double) __attribute__ ((__nothrow__ , __leaf__));
2547extern double lgamma (
double) __attribute__ ((__nothrow__ , __leaf__));
extern double __lgamma (
double) __attribute__ ((__nothrow__ , __leaf__));
2548extern double tgamma (
double) __attribute__ ((__nothrow__ , __leaf__));
extern double __tgamma (
double) __attribute__ ((__nothrow__ , __leaf__));
2549extern double gamma (
double) __attribute__ ((__nothrow__ , __leaf__));
extern double __gamma (
double) __attribute__ ((__nothrow__ , __leaf__));
2550extern double lgamma_r (
double,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern double __lgamma_r (
double,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
2551extern double rint (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __rint (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2552extern double nextafter (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double __nextafter (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
2553extern double nexttoward (
double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double __nexttoward (
double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
2554extern double nextdown (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __nextdown (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2555extern double nextup (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __nextup (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2556extern double remainder (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double __remainder (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
2557extern double scalbn (
double __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
extern double __scalbn (
double __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
2558extern int ilogb (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern int __ilogb (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2559extern long int llogb (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __llogb (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2560extern double scalbln (
double __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern double __scalbln (
double __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
2561extern double nearbyint (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern double __nearbyint (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2562extern double round (
double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __round (
double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2563extern double trunc (
double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __trunc (
double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2564extern double remquo (
double __x,
double __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern double __remquo (
double __x,
double __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
2565extern long int lrint (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lrint (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2567extern long long int llrint (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llrint (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2568extern long int lround (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lround (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2570extern long long int llround (
double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llround (
double __x) __attribute__ ((__nothrow__ , __leaf__));
2571extern double fdim (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
extern double __fdim (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
2572extern double fmax (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __fmax (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2573extern double fmin (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __fmin (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2574extern double fma (
double __x,
double __y,
double __z) __attribute__ ((__nothrow__ , __leaf__));
extern double __fma (
double __x,
double __y,
double __z) __attribute__ ((__nothrow__ , __leaf__));
2575extern double roundeven (
double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __roundeven (
double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2576extern __intmax_t fromfp (
double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfp (
double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2577extern __uintmax_t ufromfp (
double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfp (
double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2578extern __intmax_t fromfpx (
double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfpx (
double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2579extern __uintmax_t ufromfpx (
double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfpx (
double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2580extern int canonicalize (
double *__cx,
const double *__x) __attribute__ ((__nothrow__ , __leaf__));
2581extern double fmaxmag (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __fmaxmag (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2582extern double fminmag (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __fminmag (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2583extern double fmaximum (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __fmaximum (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2584extern double fminimum (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __fminimum (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2585extern double fmaximum_num (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __fmaximum_num (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2586extern double fminimum_num (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __fminimum_num (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2587extern double fmaximum_mag (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __fmaximum_mag (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2588extern double fminimum_mag (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __fminimum_mag (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2589extern double fmaximum_mag_num (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __fmaximum_mag_num (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2590extern double fminimum_mag_num (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern double __fminimum_mag_num (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2591extern int totalorder (
const double *__x,
const double *__y) __attribute__ ((__nothrow__ , __leaf__))
2592 __attribute__ ((__pure__));
2593extern int totalordermag (
const double *__x,
const double *__y) __attribute__ ((__nothrow__ , __leaf__))
2594 __attribute__ ((__pure__));
2595extern double getpayload (
const double *__x) __attribute__ ((__nothrow__ , __leaf__));
extern double __getpayload (
const double *__x) __attribute__ ((__nothrow__ , __leaf__));
2596extern int setpayload (
double *__x,
double __payload) __attribute__ ((__nothrow__ , __leaf__));
2597extern int setpayloadsig (
double *__x,
double __payload) __attribute__ ((__nothrow__ , __leaf__));
2598extern double scalb (
double __x,
double __n) __attribute__ ((__nothrow__ , __leaf__));
extern double __scalb (
double __x,
double __n) __attribute__ ((__nothrow__ , __leaf__));
2599extern int __fpclassifyf (
float __value) __attribute__ ((__nothrow__ , __leaf__))
2600 __attribute__ ((__const__));
2601extern int __signbitf (
float __value) __attribute__ ((__nothrow__ , __leaf__))
2602 __attribute__ ((__const__));
2603extern int __isinff (
float __value) __attribute__ ((__nothrow__ , __leaf__))
2604 __attribute__ ((__const__));
2605extern int __finitef (
float __value) __attribute__ ((__nothrow__ , __leaf__))
2606 __attribute__ ((__const__));
2607extern int __isnanf (
float __value) __attribute__ ((__nothrow__ , __leaf__))
2608 __attribute__ ((__const__));
2609extern int __iseqsigf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__));
2610extern int __issignalingf (
float __value) __attribute__ ((__nothrow__ , __leaf__))
2611 __attribute__ ((__const__));
2612 extern float acosf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __acosf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2613 extern float asinf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __asinf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2614 extern float atanf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __atanf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2615 extern float atan2f (
float __y,
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __atan2f (
float __y,
float __x) __attribute__ ((__nothrow__ , __leaf__));
2616 extern float cosf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __cosf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2617 extern float sinf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __sinf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2618 extern float tanf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __tanf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2619 extern float coshf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __coshf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2620 extern float sinhf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __sinhf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2621 extern float tanhf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __tanhf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2622 extern void sincosf (
float __x,
float *__sinx,
float *__cosx) __attribute__ ((__nothrow__ , __leaf__));
extern void __sincosf (
float __x,
float *__sinx,
float *__cosx) __attribute__ ((__nothrow__ , __leaf__));
2623 extern float acoshf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __acoshf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2624 extern float asinhf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __asinhf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2625 extern float atanhf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __atanhf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2626 extern float expf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __expf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2627extern float frexpf (
float __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern float __frexpf (
float __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
2628extern float ldexpf (
float __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern float __ldexpf (
float __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
2629 extern float logf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __logf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2630 extern float log10f (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __log10f (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2631extern float modff (
float __x,
float *__iptr) __attribute__ ((__nothrow__ , __leaf__));
extern float __modff (
float __x,
float *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
2632 extern float exp10f (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __exp10f (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2633 extern float expm1f (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __expm1f (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2634 extern float log1pf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __log1pf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2635extern float logbf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __logbf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2636 extern float exp2f (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __exp2f (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2637 extern float log2f (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __log2f (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2638 extern float powf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__));
extern float __powf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__));
2639extern float sqrtf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __sqrtf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2640 extern float hypotf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__));
extern float __hypotf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__));
2641 extern float cbrtf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __cbrtf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2642extern float ceilf (
float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __ceilf (
float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2643extern float fabsf (
float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __fabsf (
float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2644extern float floorf (
float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __floorf (
float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2645extern float fmodf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__));
extern float __fmodf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__));
2646extern int isinff (
float __value) __attribute__ ((__nothrow__ , __leaf__))
2647 __attribute__ ((__const__));
2648extern int finitef (
float __value) __attribute__ ((__nothrow__ , __leaf__))
2649 __attribute__ ((__const__));
2650extern float dremf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__));
extern float __dremf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__));
2651extern float significandf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __significandf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2652extern float copysignf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __copysignf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2653extern float nanf (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
extern float __nanf (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
2654extern int isnanf (
float __value) __attribute__ ((__nothrow__ , __leaf__))
2655 __attribute__ ((__const__));
2656extern float j0f (
float) __attribute__ ((__nothrow__ , __leaf__));
extern float __j0f (
float) __attribute__ ((__nothrow__ , __leaf__));
2657extern float j1f (
float) __attribute__ ((__nothrow__ , __leaf__));
extern float __j1f (
float) __attribute__ ((__nothrow__ , __leaf__));
2658extern float jnf (
int,
float) __attribute__ ((__nothrow__ , __leaf__));
extern float __jnf (
int,
float) __attribute__ ((__nothrow__ , __leaf__));
2659extern float y0f (
float) __attribute__ ((__nothrow__ , __leaf__));
extern float __y0f (
float) __attribute__ ((__nothrow__ , __leaf__));
2660extern float y1f (
float) __attribute__ ((__nothrow__ , __leaf__));
extern float __y1f (
float) __attribute__ ((__nothrow__ , __leaf__));
2661extern float ynf (
int,
float) __attribute__ ((__nothrow__ , __leaf__));
extern float __ynf (
int,
float) __attribute__ ((__nothrow__ , __leaf__));
2662 extern float erff (
float) __attribute__ ((__nothrow__ , __leaf__));
extern float __erff (
float) __attribute__ ((__nothrow__ , __leaf__));
2663 extern float erfcf (
float) __attribute__ ((__nothrow__ , __leaf__));
extern float __erfcf (
float) __attribute__ ((__nothrow__ , __leaf__));
2664extern float lgammaf (
float) __attribute__ ((__nothrow__ , __leaf__));
extern float __lgammaf (
float) __attribute__ ((__nothrow__ , __leaf__));
2665extern float tgammaf (
float) __attribute__ ((__nothrow__ , __leaf__));
extern float __tgammaf (
float) __attribute__ ((__nothrow__ , __leaf__));
2666extern float gammaf (
float) __attribute__ ((__nothrow__ , __leaf__));
extern float __gammaf (
float) __attribute__ ((__nothrow__ , __leaf__));
2667extern float lgammaf_r (
float,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern float __lgammaf_r (
float,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
2668extern float rintf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __rintf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2669extern float nextafterf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__));
extern float __nextafterf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__));
2670extern float nexttowardf (
float __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern float __nexttowardf (
float __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
2671extern float nextdownf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __nextdownf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2672extern float nextupf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __nextupf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2673extern float remainderf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__));
extern float __remainderf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__));
2674extern float scalbnf (
float __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
extern float __scalbnf (
float __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
2675extern int ilogbf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern int __ilogbf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2676extern long int llogbf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __llogbf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2677extern float scalblnf (
float __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern float __scalblnf (
float __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
2678extern float nearbyintf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern float __nearbyintf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2679extern float roundf (
float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __roundf (
float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2680extern float truncf (
float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __truncf (
float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2681extern float remquof (
float __x,
float __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern float __remquof (
float __x,
float __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
2682extern long int lrintf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lrintf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2684extern long long int llrintf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llrintf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2685extern long int lroundf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lroundf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2687extern long long int llroundf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llroundf (
float __x) __attribute__ ((__nothrow__ , __leaf__));
2688extern float fdimf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__));
extern float __fdimf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__));
2689extern float fmaxf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __fmaxf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2690extern float fminf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __fminf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2691extern float fmaf (
float __x,
float __y,
float __z) __attribute__ ((__nothrow__ , __leaf__));
extern float __fmaf (
float __x,
float __y,
float __z) __attribute__ ((__nothrow__ , __leaf__));
2692extern float roundevenf (
float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __roundevenf (
float __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2693extern __intmax_t fromfpf (
float __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfpf (
float __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2694extern __uintmax_t ufromfpf (
float __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfpf (
float __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2695extern __intmax_t fromfpxf (
float __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfpxf (
float __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2696extern __uintmax_t ufromfpxf (
float __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfpxf (
float __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2697extern int canonicalizef (
float *__cx,
const float *__x) __attribute__ ((__nothrow__ , __leaf__));
2698extern float fmaxmagf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __fmaxmagf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2699extern float fminmagf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __fminmagf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2700extern float fmaximumf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __fmaximumf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2701extern float fminimumf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __fminimumf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2702extern float fmaximum_numf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __fmaximum_numf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2703extern float fminimum_numf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __fminimum_numf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2704extern float fmaximum_magf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __fmaximum_magf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2705extern float fminimum_magf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __fminimum_magf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2706extern float fmaximum_mag_numf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __fmaximum_mag_numf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2707extern float fminimum_mag_numf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern float __fminimum_mag_numf (
float __x,
float __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2708extern int totalorderf (
const float *__x,
const float *__y) __attribute__ ((__nothrow__ , __leaf__))
2709 __attribute__ ((__pure__));
2710extern int totalordermagf (
const float *__x,
const float *__y) __attribute__ ((__nothrow__ , __leaf__))
2711 __attribute__ ((__pure__));
2712extern float getpayloadf (
const float *__x) __attribute__ ((__nothrow__ , __leaf__));
extern float __getpayloadf (
const float *__x) __attribute__ ((__nothrow__ , __leaf__));
2713extern int setpayloadf (
float *__x,
float __payload) __attribute__ ((__nothrow__ , __leaf__));
2714extern int setpayloadsigf (
float *__x,
float __payload) __attribute__ ((__nothrow__ , __leaf__));
2715extern float scalbf (
float __x,
float __n) __attribute__ ((__nothrow__ , __leaf__));
extern float __scalbf (
float __x,
float __n) __attribute__ ((__nothrow__ , __leaf__));
2716extern int __fpclassifyl (
long double __value) __attribute__ ((__nothrow__ , __leaf__))
2717 __attribute__ ((__const__));
2718extern int __signbitl (
long double __value) __attribute__ ((__nothrow__ , __leaf__))
2719 __attribute__ ((__const__));
2720extern int __isinfl (
long double __value) __attribute__ ((__nothrow__ , __leaf__))
2721 __attribute__ ((__const__));
2722extern int __finitel (
long double __value) __attribute__ ((__nothrow__ , __leaf__))
2723 __attribute__ ((__const__));
2724extern int __isnanl (
long double __value) __attribute__ ((__nothrow__ , __leaf__))
2725 __attribute__ ((__const__));
2726extern int __iseqsigl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
2727extern int __issignalingl (
long double __value) __attribute__ ((__nothrow__ , __leaf__))
2728 __attribute__ ((__const__));
2729 extern long double acosl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __acosl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2730 extern long double asinl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __asinl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2731 extern long double atanl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __atanl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2732 extern long double atan2l (
long double __y,
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __atan2l (
long double __y,
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2733 extern long double cosl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __cosl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2734 extern long double sinl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __sinl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2735 extern long double tanl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __tanl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2736 extern long double coshl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __coshl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2737 extern long double sinhl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __sinhl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2738 extern long double tanhl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __tanhl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2739 extern void sincosl (
long double __x,
long double *__sinx,
long double *__cosx) __attribute__ ((__nothrow__ , __leaf__));
extern void __sincosl (
long double __x,
long double *__sinx,
long double *__cosx) __attribute__ ((__nothrow__ , __leaf__));
2740 extern long double acoshl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __acoshl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2741 extern long double asinhl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __asinhl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2742 extern long double atanhl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __atanhl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2743 extern long double expl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __expl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2744extern long double frexpl (
long double __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern long double __frexpl (
long double __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
2745extern long double ldexpl (
long double __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern long double __ldexpl (
long double __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
2746 extern long double logl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __logl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2747 extern long double log10l (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __log10l (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2748extern long double modfl (
long double __x,
long double *__iptr) __attribute__ ((__nothrow__ , __leaf__));
extern long double __modfl (
long double __x,
long double *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
2749 extern long double exp10l (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __exp10l (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2750 extern long double expm1l (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __expm1l (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2751 extern long double log1pl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __log1pl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2752extern long double logbl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __logbl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2753 extern long double exp2l (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __exp2l (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2754 extern long double log2l (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __log2l (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2755 extern long double powl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern long double __powl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
2756extern long double sqrtl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __sqrtl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2757 extern long double hypotl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern long double __hypotl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
2758 extern long double cbrtl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __cbrtl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2759extern long double ceill (
long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __ceill (
long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2760extern long double fabsl (
long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __fabsl (
long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2761extern long double floorl (
long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __floorl (
long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2762extern long double fmodl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern long double __fmodl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
2763extern int isinfl (
long double __value) __attribute__ ((__nothrow__ , __leaf__))
2764 __attribute__ ((__const__));
2765extern int finitel (
long double __value) __attribute__ ((__nothrow__ , __leaf__))
2766 __attribute__ ((__const__));
2767extern long double dreml (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern long double __dreml (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
2768extern long double significandl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __significandl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2769extern long double copysignl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __copysignl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2770extern long double nanl (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
extern long double __nanl (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
2771extern int isnanl (
long double __value) __attribute__ ((__nothrow__ , __leaf__))
2772 __attribute__ ((__const__));
2773extern long double j0l (
long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double __j0l (
long double) __attribute__ ((__nothrow__ , __leaf__));
2774extern long double j1l (
long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double __j1l (
long double) __attribute__ ((__nothrow__ , __leaf__));
2775extern long double jnl (
int,
long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double __jnl (
int,
long double) __attribute__ ((__nothrow__ , __leaf__));
2776extern long double y0l (
long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double __y0l (
long double) __attribute__ ((__nothrow__ , __leaf__));
2777extern long double y1l (
long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double __y1l (
long double) __attribute__ ((__nothrow__ , __leaf__));
2778extern long double ynl (
int,
long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double __ynl (
int,
long double) __attribute__ ((__nothrow__ , __leaf__));
2779 extern long double erfl (
long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double __erfl (
long double) __attribute__ ((__nothrow__ , __leaf__));
2780 extern long double erfcl (
long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double __erfcl (
long double) __attribute__ ((__nothrow__ , __leaf__));
2781extern long double lgammal (
long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double __lgammal (
long double) __attribute__ ((__nothrow__ , __leaf__));
2782extern long double tgammal (
long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double __tgammal (
long double) __attribute__ ((__nothrow__ , __leaf__));
2783extern long double gammal (
long double) __attribute__ ((__nothrow__ , __leaf__));
extern long double __gammal (
long double) __attribute__ ((__nothrow__ , __leaf__));
2784extern long double lgammal_r (
long double,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern long double __lgammal_r (
long double,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
2785extern long double rintl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __rintl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2786extern long double nextafterl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern long double __nextafterl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
2787extern long double nexttowardl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern long double __nexttowardl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
2788extern long double nextdownl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __nextdownl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2789extern long double nextupl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __nextupl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2790extern long double remainderl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern long double __remainderl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
2791extern long double scalbnl (
long double __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
extern long double __scalbnl (
long double __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
2792extern int ilogbl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern int __ilogbl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2793extern long int llogbl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __llogbl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2794extern long double scalblnl (
long double __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern long double __scalblnl (
long double __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
2795extern long double nearbyintl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __nearbyintl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2796extern long double roundl (
long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __roundl (
long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2797extern long double truncl (
long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __truncl (
long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2798extern long double remquol (
long double __x,
long double __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern long double __remquol (
long double __x,
long double __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
2799extern long int lrintl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lrintl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2801extern long long int llrintl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llrintl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2802extern long int lroundl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lroundl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2804extern long long int llroundl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llroundl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
2805extern long double fdiml (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
extern long double __fdiml (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
2806extern long double fmaxl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __fmaxl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2807extern long double fminl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __fminl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2808extern long double fmal (
long double __x,
long double __y,
long double __z) __attribute__ ((__nothrow__ , __leaf__));
extern long double __fmal (
long double __x,
long double __y,
long double __z) __attribute__ ((__nothrow__ , __leaf__));
2809extern long double roundevenl (
long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __roundevenl (
long double __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2810extern __intmax_t fromfpl (
long double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfpl (
long double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2811extern __uintmax_t ufromfpl (
long double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfpl (
long double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2812extern __intmax_t fromfpxl (
long double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfpxl (
long double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2813extern __uintmax_t ufromfpxl (
long double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfpxl (
long double __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2814extern int canonicalizel (
long double *__cx,
const long double *__x) __attribute__ ((__nothrow__ , __leaf__));
2815extern long double fmaxmagl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __fmaxmagl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2816extern long double fminmagl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __fminmagl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2817extern long double fmaximuml (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __fmaximuml (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2818extern long double fminimuml (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __fminimuml (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2819extern long double fmaximum_numl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __fmaximum_numl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2820extern long double fminimum_numl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __fminimum_numl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2821extern long double fmaximum_magl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __fmaximum_magl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2822extern long double fminimum_magl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __fminimum_magl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2823extern long double fmaximum_mag_numl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __fmaximum_mag_numl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2824extern long double fminimum_mag_numl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern long double __fminimum_mag_numl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2825extern int totalorderl (
const long double *__x,
const long double *__y) __attribute__ ((__nothrow__ , __leaf__))
2826 __attribute__ ((__pure__));
2827extern int totalordermagl (
const long double *__x,
const long double *__y) __attribute__ ((__nothrow__ , __leaf__))
2828 __attribute__ ((__pure__));
2829extern long double getpayloadl (
const long double *__x) __attribute__ ((__nothrow__ , __leaf__));
extern long double __getpayloadl (
const long double *__x) __attribute__ ((__nothrow__ , __leaf__));
2830extern int setpayloadl (
long double *__x,
long double __payload) __attribute__ ((__nothrow__ , __leaf__));
2831extern int setpayloadsigl (
long double *__x,
long double __payload) __attribute__ ((__nothrow__ , __leaf__));
2832extern long double scalbl (
long double __x,
long double __n) __attribute__ ((__nothrow__ , __leaf__));
extern long double __scalbl (
long double __x,
long double __n) __attribute__ ((__nothrow__ , __leaf__));
2833 extern _Float32 acosf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __acosf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2834 extern _Float32 asinf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __asinf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2835 extern _Float32 atanf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __atanf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2836 extern _Float32 atan2f32 (_Float32 __y, _Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __atan2f32 (_Float32 __y, _Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2837 extern _Float32 cosf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __cosf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2838 extern _Float32 sinf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __sinf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2839 extern _Float32 tanf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __tanf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2840 extern _Float32 coshf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __coshf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2841 extern _Float32 sinhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __sinhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2842 extern _Float32 tanhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __tanhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2843 extern void sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) __attribute__ ((__nothrow__ , __leaf__));
extern void __sincosf32 (_Float32 __x, _Float32 *__sinx, _Float32 *__cosx) __attribute__ ((__nothrow__ , __leaf__));
2844 extern _Float32 acoshf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __acoshf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2845 extern _Float32 asinhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __asinhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2846 extern _Float32 atanhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __atanhf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2847 extern _Float32 expf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __expf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2848extern _Float32 frexpf32 (_Float32 __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __frexpf32 (_Float32 __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
2849extern _Float32 ldexpf32 (_Float32 __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __ldexpf32 (_Float32 __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
2850 extern _Float32 logf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __logf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2851 extern _Float32 log10f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __log10f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2852extern _Float32 modff32 (_Float32 __x, _Float32 *__iptr) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __modff32 (_Float32 __x, _Float32 *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
2853 extern _Float32 exp10f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __exp10f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2854 extern _Float32 expm1f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __expm1f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2855 extern _Float32 log1pf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __log1pf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2856extern _Float32 logbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __logbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2857 extern _Float32 exp2f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __exp2f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2858 extern _Float32 log2f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __log2f32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2859 extern _Float32 powf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __powf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
2860extern _Float32 sqrtf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __sqrtf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2861 extern _Float32 hypotf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __hypotf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
2862 extern _Float32 cbrtf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __cbrtf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2863extern _Float32 ceilf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __ceilf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2864extern _Float32 fabsf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __fabsf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2865extern _Float32 floorf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __floorf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2866extern _Float32 fmodf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __fmodf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
2867extern _Float32 copysignf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __copysignf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2868extern _Float32 nanf32 (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __nanf32 (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
2869extern _Float32 j0f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __j0f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
2870extern _Float32 j1f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __j1f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
2871extern _Float32 jnf32 (
int, _Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __jnf32 (
int, _Float32) __attribute__ ((__nothrow__ , __leaf__));
2872extern _Float32 y0f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __y0f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
2873extern _Float32 y1f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __y1f32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
2874extern _Float32 ynf32 (
int, _Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __ynf32 (
int, _Float32) __attribute__ ((__nothrow__ , __leaf__));
2875 extern _Float32 erff32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __erff32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
2876 extern _Float32 erfcf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __erfcf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
2877extern _Float32 lgammaf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __lgammaf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
2878extern _Float32 tgammaf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __tgammaf32 (_Float32) __attribute__ ((__nothrow__ , __leaf__));
2879extern _Float32 lgammaf32_r (_Float32,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __lgammaf32_r (_Float32,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
2880extern _Float32 rintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __rintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2881extern _Float32 nextafterf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __nextafterf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
2882extern _Float32 nextdownf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __nextdownf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2883extern _Float32 nextupf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __nextupf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2884extern _Float32 remainderf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __remainderf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
2885extern _Float32 scalbnf32 (_Float32 __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __scalbnf32 (_Float32 __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
2886extern int ilogbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern int __ilogbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2887extern long int llogbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __llogbf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2888extern _Float32 scalblnf32 (_Float32 __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __scalblnf32 (_Float32 __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
2889extern _Float32 nearbyintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __nearbyintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2890extern _Float32 roundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __roundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2891extern _Float32 truncf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __truncf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2892extern _Float32 remquof32 (_Float32 __x, _Float32 __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __remquof32 (_Float32 __x, _Float32 __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
2893extern long int lrintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lrintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2895extern long long int llrintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llrintf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2896extern long int lroundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lroundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2898extern long long int llroundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llroundf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__));
2899extern _Float32 fdimf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __fdimf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__));
2900extern _Float32 fmaxf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __fmaxf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2901extern _Float32 fminf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __fminf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2902extern _Float32 fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __fmaf32 (_Float32 __x, _Float32 __y, _Float32 __z) __attribute__ ((__nothrow__ , __leaf__));
2903extern _Float32 roundevenf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __roundevenf32 (_Float32 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2904extern __intmax_t fromfpf32 (_Float32 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfpf32 (_Float32 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2905extern __uintmax_t ufromfpf32 (_Float32 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfpf32 (_Float32 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2906extern __intmax_t fromfpxf32 (_Float32 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfpxf32 (_Float32 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2907extern __uintmax_t ufromfpxf32 (_Float32 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfpxf32 (_Float32 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2908extern int canonicalizef32 (_Float32 *__cx,
const _Float32 *__x) __attribute__ ((__nothrow__ , __leaf__));
2909extern _Float32 fmaxmagf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __fmaxmagf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2910extern _Float32 fminmagf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __fminmagf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2911extern _Float32 fmaximumf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __fmaximumf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2912extern _Float32 fminimumf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __fminimumf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2913extern _Float32 fmaximum_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __fmaximum_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2914extern _Float32 fminimum_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __fminimum_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2915extern _Float32 fmaximum_magf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __fmaximum_magf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2916extern _Float32 fminimum_magf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __fminimum_magf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2917extern _Float32 fmaximum_mag_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __fmaximum_mag_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2918extern _Float32 fminimum_mag_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32 __fminimum_mag_numf32 (_Float32 __x, _Float32 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2919extern int totalorderf32 (
const _Float32 *__x,
const _Float32 *__y) __attribute__ ((__nothrow__ , __leaf__))
2920 __attribute__ ((__pure__));
2921extern int totalordermagf32 (
const _Float32 *__x,
const _Float32 *__y) __attribute__ ((__nothrow__ , __leaf__))
2922 __attribute__ ((__pure__));
2923extern _Float32 getpayloadf32 (
const _Float32 *__x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32 __getpayloadf32 (
const _Float32 *__x) __attribute__ ((__nothrow__ , __leaf__));
2924extern int setpayloadf32 (_Float32 *__x, _Float32 __payload) __attribute__ ((__nothrow__ , __leaf__));
2925extern int setpayloadsigf32 (_Float32 *__x, _Float32 __payload) __attribute__ ((__nothrow__ , __leaf__));
2926 extern _Float64 acosf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __acosf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2927 extern _Float64 asinf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __asinf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2928 extern _Float64 atanf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __atanf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2929 extern _Float64 atan2f64 (_Float64 __y, _Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __atan2f64 (_Float64 __y, _Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2930 extern _Float64 cosf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __cosf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2931 extern _Float64 sinf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __sinf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2932 extern _Float64 tanf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __tanf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2933 extern _Float64 coshf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __coshf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2934 extern _Float64 sinhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __sinhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2935 extern _Float64 tanhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __tanhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2936 extern void sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) __attribute__ ((__nothrow__ , __leaf__));
extern void __sincosf64 (_Float64 __x, _Float64 *__sinx, _Float64 *__cosx) __attribute__ ((__nothrow__ , __leaf__));
2937 extern _Float64 acoshf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __acoshf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2938 extern _Float64 asinhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __asinhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2939 extern _Float64 atanhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __atanhf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2940 extern _Float64 expf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __expf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2941extern _Float64 frexpf64 (_Float64 __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __frexpf64 (_Float64 __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
2942extern _Float64 ldexpf64 (_Float64 __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __ldexpf64 (_Float64 __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
2943 extern _Float64 logf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __logf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2944 extern _Float64 log10f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __log10f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2945extern _Float64 modff64 (_Float64 __x, _Float64 *__iptr) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __modff64 (_Float64 __x, _Float64 *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
2946 extern _Float64 exp10f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __exp10f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2947 extern _Float64 expm1f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __expm1f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2948 extern _Float64 log1pf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __log1pf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2949extern _Float64 logbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __logbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2950 extern _Float64 exp2f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __exp2f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2951 extern _Float64 log2f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __log2f64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2952 extern _Float64 powf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __powf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
2953extern _Float64 sqrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __sqrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2954 extern _Float64 hypotf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __hypotf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
2955 extern _Float64 cbrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __cbrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2956extern _Float64 ceilf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __ceilf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2957extern _Float64 fabsf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __fabsf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2958extern _Float64 floorf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __floorf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2959extern _Float64 fmodf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __fmodf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
2960extern _Float64 copysignf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __copysignf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2961extern _Float64 nanf64 (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __nanf64 (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
2962extern _Float64 j0f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __j0f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
2963extern _Float64 j1f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __j1f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
2964extern _Float64 jnf64 (
int, _Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __jnf64 (
int, _Float64) __attribute__ ((__nothrow__ , __leaf__));
2965extern _Float64 y0f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __y0f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
2966extern _Float64 y1f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __y1f64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
2967extern _Float64 ynf64 (
int, _Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __ynf64 (
int, _Float64) __attribute__ ((__nothrow__ , __leaf__));
2968 extern _Float64 erff64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __erff64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
2969 extern _Float64 erfcf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __erfcf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
2970extern _Float64 lgammaf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __lgammaf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
2971extern _Float64 tgammaf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __tgammaf64 (_Float64) __attribute__ ((__nothrow__ , __leaf__));
2972extern _Float64 lgammaf64_r (_Float64,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __lgammaf64_r (_Float64,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
2973extern _Float64 rintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __rintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2974extern _Float64 nextafterf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __nextafterf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
2975extern _Float64 nextdownf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __nextdownf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2976extern _Float64 nextupf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __nextupf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2977extern _Float64 remainderf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __remainderf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
2978extern _Float64 scalbnf64 (_Float64 __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __scalbnf64 (_Float64 __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
2979extern int ilogbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern int __ilogbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2980extern long int llogbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __llogbf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2981extern _Float64 scalblnf64 (_Float64 __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __scalblnf64 (_Float64 __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
2982extern _Float64 nearbyintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __nearbyintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2983extern _Float64 roundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __roundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2984extern _Float64 truncf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __truncf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2985extern _Float64 remquof64 (_Float64 __x, _Float64 __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __remquof64 (_Float64 __x, _Float64 __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
2986extern long int lrintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lrintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2988extern long long int llrintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llrintf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2989extern long int lroundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lroundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2991extern long long int llroundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llroundf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
2992extern _Float64 fdimf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __fdimf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
2993extern _Float64 fmaxf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __fmaxf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2994extern _Float64 fminf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __fminf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2995extern _Float64 fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) __attribute__ ((__nothrow__ , __leaf__));
2996extern _Float64 roundevenf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __roundevenf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
2997extern __intmax_t fromfpf64 (_Float64 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfpf64 (_Float64 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2998extern __uintmax_t ufromfpf64 (_Float64 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfpf64 (_Float64 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
2999extern __intmax_t fromfpxf64 (_Float64 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfpxf64 (_Float64 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
3000extern __uintmax_t ufromfpxf64 (_Float64 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfpxf64 (_Float64 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
3001extern int canonicalizef64 (_Float64 *__cx,
const _Float64 *__x) __attribute__ ((__nothrow__ , __leaf__));
3002extern _Float64 fmaxmagf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __fmaxmagf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3003extern _Float64 fminmagf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __fminmagf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3004extern _Float64 fmaximumf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __fmaximumf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3005extern _Float64 fminimumf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __fminimumf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3006extern _Float64 fmaximum_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __fmaximum_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3007extern _Float64 fminimum_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __fminimum_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3008extern _Float64 fmaximum_magf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __fmaximum_magf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3009extern _Float64 fminimum_magf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __fminimum_magf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3010extern _Float64 fmaximum_mag_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __fmaximum_mag_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3011extern _Float64 fminimum_mag_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64 __fminimum_mag_numf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3012extern int totalorderf64 (
const _Float64 *__x,
const _Float64 *__y) __attribute__ ((__nothrow__ , __leaf__))
3013 __attribute__ ((__pure__));
3014extern int totalordermagf64 (
const _Float64 *__x,
const _Float64 *__y) __attribute__ ((__nothrow__ , __leaf__))
3015 __attribute__ ((__pure__));
3016extern _Float64 getpayloadf64 (
const _Float64 *__x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64 __getpayloadf64 (
const _Float64 *__x) __attribute__ ((__nothrow__ , __leaf__));
3017extern int setpayloadf64 (_Float64 *__x, _Float64 __payload) __attribute__ ((__nothrow__ , __leaf__));
3018extern int setpayloadsigf64 (_Float64 *__x, _Float64 __payload) __attribute__ ((__nothrow__ , __leaf__));
3019extern int __fpclassifyf128 (_Float128 __value) __attribute__ ((__nothrow__ , __leaf__))
3020 __attribute__ ((__const__));
3021extern int __signbitf128 (_Float128 __value) __attribute__ ((__nothrow__ , __leaf__))
3022 __attribute__ ((__const__));
3023extern int __isinff128 (_Float128 __value) __attribute__ ((__nothrow__ , __leaf__))
3024 __attribute__ ((__const__));
3025extern int __finitef128 (_Float128 __value) __attribute__ ((__nothrow__ , __leaf__))
3026 __attribute__ ((__const__));
3027extern int __isnanf128 (_Float128 __value) __attribute__ ((__nothrow__ , __leaf__))
3028 __attribute__ ((__const__));
3029extern int __iseqsigf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3030extern int __issignalingf128 (_Float128 __value) __attribute__ ((__nothrow__ , __leaf__))
3031 __attribute__ ((__const__));
3032 extern _Float128 acosf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __acosf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3033 extern _Float128 asinf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __asinf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3034 extern _Float128 atanf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __atanf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3035 extern _Float128 atan2f128 (_Float128 __y, _Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __atan2f128 (_Float128 __y, _Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3036 extern _Float128 cosf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __cosf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3037 extern _Float128 sinf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __sinf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3038 extern _Float128 tanf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __tanf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3039 extern _Float128 coshf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __coshf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3040 extern _Float128 sinhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __sinhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3041 extern _Float128 tanhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __tanhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3042 extern void sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) __attribute__ ((__nothrow__ , __leaf__));
extern void __sincosf128 (_Float128 __x, _Float128 *__sinx, _Float128 *__cosx) __attribute__ ((__nothrow__ , __leaf__));
3043 extern _Float128 acoshf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __acoshf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3044 extern _Float128 asinhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __asinhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3045 extern _Float128 atanhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __atanhf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3046 extern _Float128 expf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __expf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3047extern _Float128 frexpf128 (_Float128 __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __frexpf128 (_Float128 __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
3048extern _Float128 ldexpf128 (_Float128 __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __ldexpf128 (_Float128 __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
3049 extern _Float128 logf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __logf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3050 extern _Float128 log10f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __log10f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3051extern _Float128 modff128 (_Float128 __x, _Float128 *__iptr) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __modff128 (_Float128 __x, _Float128 *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
3052 extern _Float128 exp10f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __exp10f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3053 extern _Float128 expm1f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __expm1f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3054 extern _Float128 log1pf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __log1pf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3055extern _Float128 logbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __logbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3056 extern _Float128 exp2f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __exp2f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3057 extern _Float128 log2f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __log2f128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3058 extern _Float128 powf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __powf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3059extern _Float128 sqrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __sqrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3060 extern _Float128 hypotf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __hypotf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3061 extern _Float128 cbrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __cbrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3062extern _Float128 ceilf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __ceilf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3063extern _Float128 fabsf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __fabsf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3064extern _Float128 floorf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __floorf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3065extern _Float128 fmodf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __fmodf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3066extern _Float128 copysignf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __copysignf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3067extern _Float128 nanf128 (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __nanf128 (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
3068extern _Float128 j0f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __j0f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
3069extern _Float128 j1f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __j1f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
3070extern _Float128 jnf128 (
int, _Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __jnf128 (
int, _Float128) __attribute__ ((__nothrow__ , __leaf__));
3071extern _Float128 y0f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __y0f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
3072extern _Float128 y1f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __y1f128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
3073extern _Float128 ynf128 (
int, _Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __ynf128 (
int, _Float128) __attribute__ ((__nothrow__ , __leaf__));
3074 extern _Float128 erff128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __erff128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
3075 extern _Float128 erfcf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __erfcf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
3076extern _Float128 lgammaf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __lgammaf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
3077extern _Float128 tgammaf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __tgammaf128 (_Float128) __attribute__ ((__nothrow__ , __leaf__));
3078extern _Float128 lgammaf128_r (_Float128,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __lgammaf128_r (_Float128,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
3079extern _Float128 rintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __rintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3080extern _Float128 nextafterf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __nextafterf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3081extern _Float128 nextdownf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __nextdownf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3082extern _Float128 nextupf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __nextupf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3083extern _Float128 remainderf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __remainderf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3084extern _Float128 scalbnf128 (_Float128 __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __scalbnf128 (_Float128 __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
3085extern int ilogbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern int __ilogbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3086extern long int llogbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __llogbf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3087extern _Float128 scalblnf128 (_Float128 __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __scalblnf128 (_Float128 __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
3088extern _Float128 nearbyintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __nearbyintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3089extern _Float128 roundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __roundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3090extern _Float128 truncf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __truncf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3091extern _Float128 remquof128 (_Float128 __x, _Float128 __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __remquof128 (_Float128 __x, _Float128 __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
3092extern long int lrintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lrintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3094extern long long int llrintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llrintf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3095extern long int lroundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lroundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3097extern long long int llroundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llroundf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3098extern _Float128 fdimf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __fdimf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3099extern _Float128 fmaxf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __fmaxf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3100extern _Float128 fminf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __fminf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3101extern _Float128 fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) __attribute__ ((__nothrow__ , __leaf__));
3102extern _Float128 roundevenf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __roundevenf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3103extern __intmax_t fromfpf128 (_Float128 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfpf128 (_Float128 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
3104extern __uintmax_t ufromfpf128 (_Float128 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfpf128 (_Float128 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
3105extern __intmax_t fromfpxf128 (_Float128 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfpxf128 (_Float128 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
3106extern __uintmax_t ufromfpxf128 (_Float128 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfpxf128 (_Float128 __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
3107extern int canonicalizef128 (_Float128 *__cx,
const _Float128 *__x) __attribute__ ((__nothrow__ , __leaf__));
3108extern _Float128 fmaxmagf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __fmaxmagf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3109extern _Float128 fminmagf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __fminmagf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3110extern _Float128 fmaximumf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __fmaximumf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3111extern _Float128 fminimumf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __fminimumf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3112extern _Float128 fmaximum_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __fmaximum_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3113extern _Float128 fminimum_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __fminimum_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3114extern _Float128 fmaximum_magf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __fmaximum_magf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3115extern _Float128 fminimum_magf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __fminimum_magf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3116extern _Float128 fmaximum_mag_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __fmaximum_mag_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3117extern _Float128 fminimum_mag_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float128 __fminimum_mag_numf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3118extern int totalorderf128 (
const _Float128 *__x,
const _Float128 *__y) __attribute__ ((__nothrow__ , __leaf__))
3119 __attribute__ ((__pure__));
3120extern int totalordermagf128 (
const _Float128 *__x,
const _Float128 *__y) __attribute__ ((__nothrow__ , __leaf__))
3121 __attribute__ ((__pure__));
3122extern _Float128 getpayloadf128 (
const _Float128 *__x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float128 __getpayloadf128 (
const _Float128 *__x) __attribute__ ((__nothrow__ , __leaf__));
3123extern int setpayloadf128 (_Float128 *__x, _Float128 __payload) __attribute__ ((__nothrow__ , __leaf__));
3124extern int setpayloadsigf128 (_Float128 *__x, _Float128 __payload) __attribute__ ((__nothrow__ , __leaf__));
3125 extern _Float32x acosf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __acosf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3126 extern _Float32x asinf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __asinf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3127 extern _Float32x atanf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __atanf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3128 extern _Float32x atan2f32x (_Float32x __y, _Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __atan2f32x (_Float32x __y, _Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3129 extern _Float32x cosf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __cosf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3130 extern _Float32x sinf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __sinf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3131 extern _Float32x tanf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __tanf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3132 extern _Float32x coshf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __coshf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3133 extern _Float32x sinhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __sinhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3134 extern _Float32x tanhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __tanhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3135 extern void sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) __attribute__ ((__nothrow__ , __leaf__));
extern void __sincosf32x (_Float32x __x, _Float32x *__sinx, _Float32x *__cosx) __attribute__ ((__nothrow__ , __leaf__));
3136 extern _Float32x acoshf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __acoshf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3137 extern _Float32x asinhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __asinhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3138 extern _Float32x atanhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __atanhf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3139 extern _Float32x expf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __expf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3140extern _Float32x frexpf32x (_Float32x __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __frexpf32x (_Float32x __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
3141extern _Float32x ldexpf32x (_Float32x __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __ldexpf32x (_Float32x __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
3142 extern _Float32x logf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __logf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3143 extern _Float32x log10f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __log10f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3144extern _Float32x modff32x (_Float32x __x, _Float32x *__iptr) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __modff32x (_Float32x __x, _Float32x *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
3145 extern _Float32x exp10f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __exp10f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3146 extern _Float32x expm1f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __expm1f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3147 extern _Float32x log1pf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __log1pf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3148extern _Float32x logbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __logbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3149 extern _Float32x exp2f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __exp2f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3150 extern _Float32x log2f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __log2f32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3151 extern _Float32x powf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __powf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
3152extern _Float32x sqrtf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __sqrtf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3153 extern _Float32x hypotf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __hypotf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
3154 extern _Float32x cbrtf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __cbrtf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3155extern _Float32x ceilf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __ceilf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3156extern _Float32x fabsf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __fabsf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3157extern _Float32x floorf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __floorf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3158extern _Float32x fmodf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __fmodf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
3159extern _Float32x copysignf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __copysignf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3160extern _Float32x nanf32x (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __nanf32x (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
3161extern _Float32x j0f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __j0f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
3162extern _Float32x j1f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __j1f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
3163extern _Float32x jnf32x (
int, _Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __jnf32x (
int, _Float32x) __attribute__ ((__nothrow__ , __leaf__));
3164extern _Float32x y0f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __y0f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
3165extern _Float32x y1f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __y1f32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
3166extern _Float32x ynf32x (
int, _Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __ynf32x (
int, _Float32x) __attribute__ ((__nothrow__ , __leaf__));
3167 extern _Float32x erff32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __erff32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
3168 extern _Float32x erfcf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __erfcf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
3169extern _Float32x lgammaf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __lgammaf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
3170extern _Float32x tgammaf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __tgammaf32x (_Float32x) __attribute__ ((__nothrow__ , __leaf__));
3171extern _Float32x lgammaf32x_r (_Float32x,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __lgammaf32x_r (_Float32x,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
3172extern _Float32x rintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __rintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3173extern _Float32x nextafterf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __nextafterf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
3174extern _Float32x nextdownf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __nextdownf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3175extern _Float32x nextupf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __nextupf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3176extern _Float32x remainderf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __remainderf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
3177extern _Float32x scalbnf32x (_Float32x __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __scalbnf32x (_Float32x __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
3178extern int ilogbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern int __ilogbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3179extern long int llogbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __llogbf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3180extern _Float32x scalblnf32x (_Float32x __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __scalblnf32x (_Float32x __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
3181extern _Float32x nearbyintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __nearbyintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3182extern _Float32x roundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __roundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3183extern _Float32x truncf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __truncf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3184extern _Float32x remquof32x (_Float32x __x, _Float32x __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __remquof32x (_Float32x __x, _Float32x __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
3185extern long int lrintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lrintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3187extern long long int llrintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llrintf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3188extern long int lroundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lroundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3190extern long long int llroundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llroundf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3191extern _Float32x fdimf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __fdimf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
3192extern _Float32x fmaxf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __fmaxf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3193extern _Float32x fminf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __fminf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3194extern _Float32x fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) __attribute__ ((__nothrow__ , __leaf__));
3195extern _Float32x roundevenf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __roundevenf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3196extern __intmax_t fromfpf32x (_Float32x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfpf32x (_Float32x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
3197extern __uintmax_t ufromfpf32x (_Float32x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfpf32x (_Float32x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
3198extern __intmax_t fromfpxf32x (_Float32x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfpxf32x (_Float32x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
3199extern __uintmax_t ufromfpxf32x (_Float32x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfpxf32x (_Float32x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
3200extern int canonicalizef32x (_Float32x *__cx,
const _Float32x *__x) __attribute__ ((__nothrow__ , __leaf__));
3201extern _Float32x fmaxmagf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __fmaxmagf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3202extern _Float32x fminmagf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __fminmagf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3203extern _Float32x fmaximumf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __fmaximumf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3204extern _Float32x fminimumf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __fminimumf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3205extern _Float32x fmaximum_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __fmaximum_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3206extern _Float32x fminimum_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __fminimum_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3207extern _Float32x fmaximum_magf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __fmaximum_magf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3208extern _Float32x fminimum_magf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __fminimum_magf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3209extern _Float32x fmaximum_mag_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __fmaximum_mag_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3210extern _Float32x fminimum_mag_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float32x __fminimum_mag_numf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3211extern int totalorderf32x (
const _Float32x *__x,
const _Float32x *__y) __attribute__ ((__nothrow__ , __leaf__))
3212 __attribute__ ((__pure__));
3213extern int totalordermagf32x (
const _Float32x *__x,
const _Float32x *__y) __attribute__ ((__nothrow__ , __leaf__))
3214 __attribute__ ((__pure__));
3215extern _Float32x getpayloadf32x (
const _Float32x *__x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float32x __getpayloadf32x (
const _Float32x *__x) __attribute__ ((__nothrow__ , __leaf__));
3216extern int setpayloadf32x (_Float32x *__x, _Float32x __payload) __attribute__ ((__nothrow__ , __leaf__));
3217extern int setpayloadsigf32x (_Float32x *__x, _Float32x __payload) __attribute__ ((__nothrow__ , __leaf__));
3218 extern _Float64x acosf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __acosf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3219 extern _Float64x asinf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __asinf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3220 extern _Float64x atanf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __atanf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3221 extern _Float64x atan2f64x (_Float64x __y, _Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __atan2f64x (_Float64x __y, _Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3222 extern _Float64x cosf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __cosf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3223 extern _Float64x sinf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __sinf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3224 extern _Float64x tanf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __tanf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3225 extern _Float64x coshf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __coshf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3226 extern _Float64x sinhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __sinhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3227 extern _Float64x tanhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __tanhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3228 extern void sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) __attribute__ ((__nothrow__ , __leaf__));
extern void __sincosf64x (_Float64x __x, _Float64x *__sinx, _Float64x *__cosx) __attribute__ ((__nothrow__ , __leaf__));
3229 extern _Float64x acoshf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __acoshf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3230 extern _Float64x asinhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __asinhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3231 extern _Float64x atanhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __atanhf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3232 extern _Float64x expf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __expf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3233extern _Float64x frexpf64x (_Float64x __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __frexpf64x (_Float64x __x,
int *__exponent) __attribute__ ((__nothrow__ , __leaf__));
3234extern _Float64x ldexpf64x (_Float64x __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __ldexpf64x (_Float64x __x,
int __exponent) __attribute__ ((__nothrow__ , __leaf__));
3235 extern _Float64x logf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __logf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3236 extern _Float64x log10f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __log10f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3237extern _Float64x modff64x (_Float64x __x, _Float64x *__iptr) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __modff64x (_Float64x __x, _Float64x *__iptr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
3238 extern _Float64x exp10f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __exp10f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3239 extern _Float64x expm1f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __expm1f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3240 extern _Float64x log1pf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __log1pf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3241extern _Float64x logbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __logbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3242 extern _Float64x exp2f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __exp2f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3243 extern _Float64x log2f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __log2f64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3244 extern _Float64x powf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __powf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3245extern _Float64x sqrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __sqrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3246 extern _Float64x hypotf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __hypotf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3247 extern _Float64x cbrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __cbrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3248extern _Float64x ceilf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __ceilf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3249extern _Float64x fabsf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __fabsf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3250extern _Float64x floorf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __floorf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3251extern _Float64x fmodf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __fmodf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3252extern _Float64x copysignf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __copysignf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3253extern _Float64x nanf64x (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __nanf64x (
const char *__tagb) __attribute__ ((__nothrow__ , __leaf__));
3254extern _Float64x j0f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __j0f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
3255extern _Float64x j1f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __j1f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
3256extern _Float64x jnf64x (
int, _Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __jnf64x (
int, _Float64x) __attribute__ ((__nothrow__ , __leaf__));
3257extern _Float64x y0f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __y0f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
3258extern _Float64x y1f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __y1f64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
3259extern _Float64x ynf64x (
int, _Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __ynf64x (
int, _Float64x) __attribute__ ((__nothrow__ , __leaf__));
3260 extern _Float64x erff64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __erff64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
3261 extern _Float64x erfcf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __erfcf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
3262extern _Float64x lgammaf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __lgammaf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
3263extern _Float64x tgammaf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __tgammaf64x (_Float64x) __attribute__ ((__nothrow__ , __leaf__));
3264extern _Float64x lgammaf64x_r (_Float64x,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __lgammaf64x_r (_Float64x,
int *__signgamp) __attribute__ ((__nothrow__ , __leaf__));
3265extern _Float64x rintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __rintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3266extern _Float64x nextafterf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __nextafterf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3267extern _Float64x nextdownf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __nextdownf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3268extern _Float64x nextupf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __nextupf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3269extern _Float64x remainderf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __remainderf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3270extern _Float64x scalbnf64x (_Float64x __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __scalbnf64x (_Float64x __x,
int __n) __attribute__ ((__nothrow__ , __leaf__));
3271extern int ilogbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern int __ilogbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3272extern long int llogbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __llogbf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3273extern _Float64x scalblnf64x (_Float64x __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __scalblnf64x (_Float64x __x,
long int __n) __attribute__ ((__nothrow__ , __leaf__));
3274extern _Float64x nearbyintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __nearbyintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3275extern _Float64x roundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __roundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3276extern _Float64x truncf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __truncf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3277extern _Float64x remquof64x (_Float64x __x, _Float64x __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __remquof64x (_Float64x __x, _Float64x __y,
int *__quo) __attribute__ ((__nothrow__ , __leaf__));
3278extern long int lrintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lrintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3280extern long long int llrintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llrintf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3281extern long int lroundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern long int __lroundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3283extern long long int llroundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
extern long long int __llroundf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3284extern _Float64x fdimf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __fdimf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3285extern _Float64x fmaxf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __fmaxf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3286extern _Float64x fminf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __fminf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3287extern _Float64x fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) __attribute__ ((__nothrow__ , __leaf__));
3288extern _Float64x roundevenf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __roundevenf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3289extern __intmax_t fromfpf64x (_Float64x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfpf64x (_Float64x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
3290extern __uintmax_t ufromfpf64x (_Float64x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfpf64x (_Float64x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
3291extern __intmax_t fromfpxf64x (_Float64x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __intmax_t __fromfpxf64x (_Float64x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
3292extern __uintmax_t ufromfpxf64x (_Float64x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
extern __uintmax_t __ufromfpxf64x (_Float64x __x,
int __round,
unsigned int __width) __attribute__ ((__nothrow__ , __leaf__));
3293extern int canonicalizef64x (_Float64x *__cx,
const _Float64x *__x) __attribute__ ((__nothrow__ , __leaf__));
3294extern _Float64x fmaxmagf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __fmaxmagf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3295extern _Float64x fminmagf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __fminmagf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3296extern _Float64x fmaximumf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __fmaximumf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3297extern _Float64x fminimumf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __fminimumf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3298extern _Float64x fmaximum_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __fmaximum_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3299extern _Float64x fminimum_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __fminimum_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3300extern _Float64x fmaximum_magf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __fmaximum_magf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3301extern _Float64x fminimum_magf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __fminimum_magf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3302extern _Float64x fmaximum_mag_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __fmaximum_mag_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3303extern _Float64x fminimum_mag_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
extern _Float64x __fminimum_mag_numf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3304extern int totalorderf64x (
const _Float64x *__x,
const _Float64x *__y) __attribute__ ((__nothrow__ , __leaf__))
3305 __attribute__ ((__pure__));
3306extern int totalordermagf64x (
const _Float64x *__x,
const _Float64x *__y) __attribute__ ((__nothrow__ , __leaf__))
3307 __attribute__ ((__pure__));
3308extern _Float64x getpayloadf64x (
const _Float64x *__x) __attribute__ ((__nothrow__ , __leaf__));
extern _Float64x __getpayloadf64x (
const _Float64x *__x) __attribute__ ((__nothrow__ , __leaf__));
3309extern int setpayloadf64x (_Float64x *__x, _Float64x __payload) __attribute__ ((__nothrow__ , __leaf__));
3310extern int setpayloadsigf64x (_Float64x *__x, _Float64x __payload) __attribute__ ((__nothrow__ , __leaf__));
3311extern float fadd (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
3312extern float fdiv (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
3313extern float ffma (
double __x,
double __y,
double __z) __attribute__ ((__nothrow__ , __leaf__));
3314extern float fmul (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
3315extern float fsqrt (
double __x) __attribute__ ((__nothrow__ , __leaf__));
3316extern float fsub (
double __x,
double __y) __attribute__ ((__nothrow__ , __leaf__));
3317extern float faddl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
3318extern float fdivl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
3319extern float ffmal (
long double __x,
long double __y,
long double __z) __attribute__ ((__nothrow__ , __leaf__));
3320extern float fmull (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
3321extern float fsqrtl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
3322extern float fsubl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
3323extern double daddl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
3324extern double ddivl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
3325extern double dfmal (
long double __x,
long double __y,
long double __z) __attribute__ ((__nothrow__ , __leaf__));
3326extern double dmull (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
3327extern double dsqrtl (
long double __x) __attribute__ ((__nothrow__ , __leaf__));
3328extern double dsubl (
long double __x,
long double __y) __attribute__ ((__nothrow__ , __leaf__));
3329extern _Float32 f32addf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
3330extern _Float32 f32divf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
3331extern _Float32 f32fmaf32x (_Float32x __x, _Float32x __y, _Float32x __z) __attribute__ ((__nothrow__ , __leaf__));
3332extern _Float32 f32mulf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
3333extern _Float32 f32sqrtf32x (_Float32x __x) __attribute__ ((__nothrow__ , __leaf__));
3334extern _Float32 f32subf32x (_Float32x __x, _Float32x __y) __attribute__ ((__nothrow__ , __leaf__));
3335extern _Float32 f32addf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
3336extern _Float32 f32divf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
3337extern _Float32 f32fmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) __attribute__ ((__nothrow__ , __leaf__));
3338extern _Float32 f32mulf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
3339extern _Float32 f32sqrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
3340extern _Float32 f32subf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
3341extern _Float32 f32addf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3342extern _Float32 f32divf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3343extern _Float32 f32fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) __attribute__ ((__nothrow__ , __leaf__));
3344extern _Float32 f32mulf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3345extern _Float32 f32sqrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3346extern _Float32 f32subf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3347extern _Float32 f32addf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3348extern _Float32 f32divf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3349extern _Float32 f32fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) __attribute__ ((__nothrow__ , __leaf__));
3350extern _Float32 f32mulf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3351extern _Float32 f32sqrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3352extern _Float32 f32subf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3353extern _Float32x f32xaddf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
3354extern _Float32x f32xdivf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
3355extern _Float32x f32xfmaf64 (_Float64 __x, _Float64 __y, _Float64 __z) __attribute__ ((__nothrow__ , __leaf__));
3356extern _Float32x f32xmulf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
3357extern _Float32x f32xsqrtf64 (_Float64 __x) __attribute__ ((__nothrow__ , __leaf__));
3358extern _Float32x f32xsubf64 (_Float64 __x, _Float64 __y) __attribute__ ((__nothrow__ , __leaf__));
3359extern _Float32x f32xaddf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3360extern _Float32x f32xdivf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3361extern _Float32x f32xfmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) __attribute__ ((__nothrow__ , __leaf__));
3362extern _Float32x f32xmulf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3363extern _Float32x f32xsqrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3364extern _Float32x f32xsubf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3365extern _Float32x f32xaddf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3366extern _Float32x f32xdivf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3367extern _Float32x f32xfmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) __attribute__ ((__nothrow__ , __leaf__));
3368extern _Float32x f32xmulf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3369extern _Float32x f32xsqrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3370extern _Float32x f32xsubf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3371extern _Float64 f64addf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3372extern _Float64 f64divf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3373extern _Float64 f64fmaf64x (_Float64x __x, _Float64x __y, _Float64x __z) __attribute__ ((__nothrow__ , __leaf__));
3374extern _Float64 f64mulf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3375extern _Float64 f64sqrtf64x (_Float64x __x) __attribute__ ((__nothrow__ , __leaf__));
3376extern _Float64 f64subf64x (_Float64x __x, _Float64x __y) __attribute__ ((__nothrow__ , __leaf__));
3377extern _Float64 f64addf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3378extern _Float64 f64divf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3379extern _Float64 f64fmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) __attribute__ ((__nothrow__ , __leaf__));
3380extern _Float64 f64mulf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3381extern _Float64 f64sqrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3382extern _Float64 f64subf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3383extern _Float64x f64xaddf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3384extern _Float64x f64xdivf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3385extern _Float64x f64xfmaf128 (_Float128 __x, _Float128 __y, _Float128 __z) __attribute__ ((__nothrow__ , __leaf__));
3386extern _Float64x f64xmulf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3387extern _Float64x f64xsqrtf128 (_Float128 __x) __attribute__ ((__nothrow__ , __leaf__));
3388extern _Float64x f64xsubf128 (_Float128 __x, _Float128 __y) __attribute__ ((__nothrow__ , __leaf__));
3403extern int __iscanonicall (
long double __x)
3404 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3409 __syscall_slong_t offset;
3410 __syscall_slong_t freq;
3411 __syscall_slong_t maxerror;
3412 __syscall_slong_t esterror;
3414 __syscall_slong_t constant;
3415 __syscall_slong_t precision;
3416 __syscall_slong_t tolerance;
3418 __syscall_slong_t tick;
3419 __syscall_slong_t ppsfreq;
3420 __syscall_slong_t jitter;
3422 __syscall_slong_t stabil;
3423 __syscall_slong_t jitcnt;
3424 __syscall_slong_t calcnt;
3425 __syscall_slong_t errcnt;
3426 __syscall_slong_t stbcnt;
3428 int :32; int :32; int :32; int :32;
3429 int :32; int :32; int :32; int :32;
3430 int :32; int :32; int :32;
3433extern int clock_adjtime (__clockid_t __clock_id,
struct timex *__utx) __attribute__ ((__nothrow__ , __leaf__));
3447 const char *tm_zone;
3456extern clock_t clock (
void) __attribute__ ((__nothrow__ , __leaf__));
3457extern time_t time (time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));
3458extern double difftime (time_t __time1, time_t __time0)
3459 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3460extern time_t mktime (
struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));
3461extern size_t strftime (
char *__restrict __s,
size_t __maxsize,
3462 const char *__restrict __format,
3463 const struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__));
3464extern char *strptime (
const char *__restrict __s,
3465 const char *__restrict __fmt,
struct tm *__tp)
3466 __attribute__ ((__nothrow__ , __leaf__));
3467extern size_t strftime_l (
char *__restrict __s,
size_t __maxsize,
3468 const char *__restrict __format,
3469 const struct tm *__restrict __tp,
3470 locale_t __loc) __attribute__ ((__nothrow__ , __leaf__));
3471extern char *strptime_l (
const char *__restrict __s,
3472 const char *__restrict __fmt,
struct tm *__tp,
3473 locale_t __loc) __attribute__ ((__nothrow__ , __leaf__));
3474extern struct tm *gmtime (
const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));
3475extern struct tm *localtime (
const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));
3476extern struct tm *gmtime_r (
const time_t *__restrict __timer,
3477 struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__));
3478extern struct tm *localtime_r (
const time_t *__restrict __timer,
3479 struct tm *__restrict __tp) __attribute__ ((__nothrow__ , __leaf__));
3480extern char *asctime (
const struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));
3481extern char *ctime (
const time_t *__timer) __attribute__ ((__nothrow__ , __leaf__));
3482extern char *asctime_r (
const struct tm *__restrict __tp,
3483 char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));
3484extern char *ctime_r (
const time_t *__restrict __timer,
3485 char *__restrict __buf) __attribute__ ((__nothrow__ , __leaf__));
3486extern char *__tzname[2];
3487extern int __daylight;
3488extern long int __timezone;
3489extern char *tzname[2];
3490extern void tzset (
void) __attribute__ ((__nothrow__ , __leaf__));
3493extern time_t timegm (
struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));
3494extern time_t timelocal (
struct tm *__tp) __attribute__ ((__nothrow__ , __leaf__));
3495extern int dysize (
int __year) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
3496extern int nanosleep (
const struct timespec *__requested_time,
3498extern int clock_getres (clockid_t __clock_id,
struct timespec *__res) __attribute__ ((__nothrow__ , __leaf__));
3499extern int clock_gettime (clockid_t __clock_id,
struct timespec *__tp) __attribute__ ((__nothrow__ , __leaf__));
3500extern int clock_settime (clockid_t __clock_id,
const struct timespec *__tp)
3501 __attribute__ ((__nothrow__ , __leaf__));
3502extern int clock_nanosleep (clockid_t __clock_id,
int __flags,
3505extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__ , __leaf__));
3506extern int timer_create (clockid_t __clock_id,
3508 timer_t *__restrict __timerid) __attribute__ ((__nothrow__ , __leaf__));
3509extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__ , __leaf__));
3510extern int timer_settime (timer_t __timerid,
int __flags,
3512 struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__ , __leaf__));
3513extern int timer_gettime (timer_t __timerid,
struct itimerspec *__value)
3514 __attribute__ ((__nothrow__ , __leaf__));
3515extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__ , __leaf__));
3516extern int timespec_get (
struct timespec *__ts,
int __base)
3517 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
3518extern int timespec_getres (
struct timespec *__ts,
int __base)
3519 __attribute__ ((__nothrow__ , __leaf__));
3520extern int getdate_err;
3521extern struct tm *getdate (
const char *__string);
3522extern int getdate_r (
const char *__restrict __string,
3523 struct tm *__restrict __resbufp);
3531extern int gettimeofday (
struct timeval *__restrict __tv,
3532 void *__restrict __tz) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
3533extern int settimeofday (
const struct timeval *__tv,
3535 __attribute__ ((__nothrow__ , __leaf__));
3536extern int adjtime (
const struct timeval *__delta,
3537 struct timeval *__olddelta) __attribute__ ((__nothrow__ , __leaf__));
3549typedef enum __itimer_which __itimer_which_t;
3550extern int getitimer (__itimer_which_t __which,
3551 struct itimerval *__value) __attribute__ ((__nothrow__ , __leaf__));
3552extern int setitimer (__itimer_which_t __which,
3553 const struct itimerval *__restrict __new,
3554 struct itimerval *__restrict __old) __attribute__ ((__nothrow__ , __leaf__));
3555extern int utimes (
const char *__file,
const struct timeval __tvp[2])
3556 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
3557extern int lutimes (
const char *__file,
const struct timeval __tvp[2])
3558 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
3559extern int futimes (
int __fd,
const struct timeval __tvp[2]) __attribute__ ((__nothrow__ , __leaf__));
3560extern int futimesat (
int __fd,
const char *__file,
3561 const struct timeval __tvp[2]) __attribute__ ((__nothrow__ , __leaf__));
3565extern size_t strlcpy(
char *,
const char*,
size_t);
3566extern size_t strlcat(
char *,
const char*,
size_t);
3567__attribute__((__format__(__printf__, 1, 2)))
3568extern
void setproctitle(const
char *fmt, ...);
3572extern
long int __sysconf (
int __name) __attribute__ ((__nothrow__ , __leaf__));
3574typedef
unsigned long VALUE;
3575typedef
unsigned long ID;
3576__extension__ _Static_assert(4 == sizeof(
int), "sizeof_int" ": " "SIZEOF_INT == sizeof(
int)");
3577__extension__ _Static_assert(8 == sizeof(
long), "sizeof_long" ": " "SIZEOF_LONG == sizeof(
long)");
3578__extension__ _Static_assert(8 == sizeof(
long long), "sizeof_long_long" ": " "SIZEOF_LONG_LONG == sizeof(
LONG_LONG)");
3579__extension__ _Static_assert(8 == sizeof(
void *), "sizeof_voidp" ": " "SIZEOF_VOIDP == sizeof(
void *)");
3582VALUE rb_class_new(VALUE super);
3583VALUE rb_mod_init_copy(VALUE clone, VALUE orig);
3584void rb_check_inheritable(VALUE super);
3585VALUE rb_define_class_id(ID
id, VALUE super);
3586VALUE rb_define_class_id_under(VALUE outer, ID
id, VALUE super);
3587VALUE rb_module_new(
void);
3588VALUE rb_refinement_new(
void);
3589VALUE rb_define_module_id(ID
id);
3590VALUE rb_define_module_id_under(VALUE outer, ID
id);
3591VALUE rb_mod_included_modules(VALUE mod);
3592VALUE rb_mod_include_p(VALUE child, VALUE parent);
3593VALUE rb_mod_ancestors(VALUE mod);
3595VALUE rb_class_subclasses(VALUE klass);
3596VALUE rb_class_instance_methods(
int argc, const VALUE *argv, VALUE mod);
3597VALUE rb_class_public_instance_methods(
int argc, const VALUE *argv, VALUE mod);
3598VALUE rb_class_protected_instance_methods(
int argc, const VALUE *argv, VALUE mod);
3599VALUE rb_class_private_instance_methods(
int argc, const VALUE *argv, VALUE mod);
3600VALUE rb_obj_singleton_methods(
int argc, const VALUE *argv, VALUE obj);
3603__attribute__((__nonnull__ ()))
3605__attribute__((__nonnull__ ()))
3607__attribute__((__nonnull__ ()))
3609VALUE rb_singleton_class(VALUE obj);
3620VALUE
rb_apply(VALUE recv, ID mid, VALUE args);
3629void rb_clear_constant_cache(
void);
3630void rb_alias(VALUE klass, ID dst, ID src);
3631void rb_attr(VALUE klass, ID name,
int need_reader,
int need_writer,
int honour_visibility);
3632__attribute__((__nonnull__ ()))
3639__attribute__((__noreturn__))
3647__attribute__((__nonnull__ ()))
3648void rb_define_method(VALUE klass, const
char *mid, VALUE (*func)(),
int arity);
3649__attribute__((__nonnull__ ()))
3651__attribute__((__nonnull__ ()))
3653__attribute__((__nonnull__ ()))
3655__attribute__((__nonnull__ ()))
3657__attribute__((__nonnull__ ()))
3658void rb_define_attr(VALUE klass, const
char *name,
int read,
int write);
3661[[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_m3(VALUE, const
char *, VALUE(*)(),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_m2(VALUE, const
char *, VALUE(*)(VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_m1(VALUE, const
char *, VALUE(*)(
int, union { VALUE *x;
const VALUE *y; } __attribute__((__transparent_union__)),
VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_00(VALUE, const
char *, VALUE(*)(VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_01(VALUE, const
char *, VALUE(*)(VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_02(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_03(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_04(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_05(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_06(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_07(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_08(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_09(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_10(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_11(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_12(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_13(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_14(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_singleton_method"))) static
void rb_define_singleton_method_15(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int);
3662[[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_m3(VALUE, const
char *, VALUE(*)(),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_m2(VALUE, const
char *, VALUE(*)(VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_m1(VALUE, const
char *, VALUE(*)(
int, union { VALUE *x;
const VALUE *y; } __attribute__((__transparent_union__)),
VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_00(VALUE, const
char *, VALUE(*)(VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_01(VALUE, const
char *, VALUE(*)(VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_02(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_03(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_04(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_05(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_06(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_07(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_08(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_09(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_10(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_11(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_12(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_13(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_14(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_protected_method"))) static
void rb_define_protected_method_15(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int);
3663[[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_m3(VALUE, const
char *, VALUE(*)(),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_m2(VALUE, const
char *, VALUE(*)(VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_m1(VALUE, const
char *, VALUE(*)(
int, union { VALUE *x;
const VALUE *y; } __attribute__((__transparent_union__)),
VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_00(VALUE, const
char *, VALUE(*)(VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_01(VALUE, const
char *, VALUE(*)(VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_02(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_03(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_04(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_05(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_06(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_07(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_08(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_09(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_10(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_11(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_12(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_13(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_14(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_private_method"))) static
void rb_define_private_method_15(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int);
3664[[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_m3(VALUE, const
char *, VALUE(*)(),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_m2(VALUE, const
char *, VALUE(*)(VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_m1(VALUE, const
char *, VALUE(*)(
int, union { VALUE *x;
const VALUE *y; } __attribute__((__transparent_union__)),
VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_00(VALUE, const
char *, VALUE(*)(VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_01(VALUE, const
char *, VALUE(*)(VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_02(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_03(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_04(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_05(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_06(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_07(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_08(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_09(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_10(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_11(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_12(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_13(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_14(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_module_function"))) static
void rb_define_module_function_15(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int);
3665[[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_m3(const
char *, VALUE(*)(),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_m2(const
char *, VALUE(*)(VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_m1(const
char *, VALUE(*)(
int, union { VALUE *x;
const VALUE *y; } __attribute__((__transparent_union__)),
VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_00(const
char *, VALUE(*)(VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_01(const
char *, VALUE(*)(VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_02(const
char *, VALUE(*)(VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_03(const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_04(const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_05(const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_06(const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_07(const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_08(const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_09(const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_10(const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_11(const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_12(const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_13(const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_14(const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_global_function"))) static
void rb_define_global_function_15(const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int);
3666[[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_m3(VALUE, ID, VALUE(*)(),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_m2(VALUE, ID, VALUE(*)(VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_m1(VALUE, ID, VALUE(*)(
int, union { VALUE *x;
const VALUE *y; } __attribute__((__transparent_union__)),
VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_00(VALUE, ID, VALUE(*)(VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_01(VALUE, ID, VALUE(*)(VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_02(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_03(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_04(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_05(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_06(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_07(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_08(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_09(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_10(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_11(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_12(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_13(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_14(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method_id"))) static
void rb_define_method_id_15(VALUE, ID, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int);
3667[[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_m3(VALUE, const
char *, VALUE(*)(),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_m2(VALUE, const
char *, VALUE(*)(VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_m1(VALUE, const
char *, VALUE(*)(
int, union { VALUE *x;
const VALUE *y; } __attribute__((__transparent_union__)),
VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_00(VALUE, const
char *, VALUE(*)(VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_01(VALUE, const
char *, VALUE(*)(VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_02(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_03(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_04(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_05(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_06(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_07(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_08(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_09(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_10(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_11(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_12(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_13(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_14(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int); [[maybe_unused]] __attribute__((__nonnull__ ())) __attribute__((__weakref__("
rb_define_method"))) static
void rb_define_method_15(VALUE, const
char *, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE),
int);
3678ruby_special_consts {
3690__attribute__((__const__))
3692__attribute__((__artificial__))
3696 return obj & ~RUBY_Qnil;
3698__attribute__((__const__))
3700__attribute__((__artificial__))
3706__attribute__((__const__))
3708__attribute__((__artificial__))
3714__attribute__((__const__))
3716__attribute__((__artificial__))
3724__attribute__((__const__))
3726__attribute__((__artificial__))
3732__attribute__((__const__))
3734__attribute__((__artificial__))
3740__attribute__((__const__))
3742__attribute__((__artificial__))
3748__attribute__((__const__))
3757__attribute__((__noreturn__))
3758__attribute__((__cold__))
3764__attribute__((__const__))
3766__attribute__((__artificial__))
3771 const unsigned long j = i;
3783 if (
sizeof(
long) <=
sizeof(int)) {
3784 ((__builtin_expect(!!(!!(i == n)), 1)) ? ((
void)0) : __builtin_unreachable());
3790__attribute__((__const__))
3793rbimpl_fix2long_by_idiv(VALUE x)
3797 const long z = y / 2;
3798 const long w = ((long)z);
3802__attribute__((__const__))
3805rbimpl_fix2long_by_shift(VALUE x)
3809 const long z = y >> 1;
3810 const long w = ((long)z);
3814__attribute__((__const__))
3817rbimpl_right_shift_is_arithmetic_p(
void)
3819 return (-1 >> 1) == -1;
3821__attribute__((__const__))
3826 if (rbimpl_right_shift_is_arithmetic_p()) {
3827 return rbimpl_fix2long_by_shift(x);
3830 return rbimpl_fix2long_by_idiv(x);
3833__attribute__((__const__))
3835static inline unsigned long
3849static inline unsigned long
3860 if ((((v) < (0x7fffffffffffffffL / 2) + 1) && ((v) >= ((-0x7fffffffffffffffL - 1L) / 2))))
3868 if (((v) < (0x7fffffffffffffffL / 2) + 1))
3881__attribute__((__artificial__))
3886 if (
sizeof(
int) <
sizeof(
long)) {
3898 if (
sizeof(
int) ==
sizeof(
long)) {
3909__attribute__((__artificial__))
3910static inline unsigned int
3914 if (
sizeof(
int) <
sizeof(
long)) {
3920 return ((
unsigned int)ret);
3922__attribute__((__artificial__))
3923static inline unsigned int
3927 if (
sizeof(
int) <
sizeof(
long)) {
3933 return ((
unsigned int)ret);
3942 if ((((v) < (0x7fffffffffffffffL / 2) + 1) && ((v) >= ((-0x7fffffffffffffffL - 1L) / 2))))
3950 if (((v) < (0x7fffffffffffffffL / 2) + 1))
3957enum ruby_rvalue_flags {
3961__attribute__((__aligned__(8)))
3968VALUE rb_obj_hide(VALUE obj);
3969VALUE rb_obj_reveal(VALUE obj, VALUE klass);
3972__attribute__((__pure__))
3973__attribute__((__artificial__))
3978 return ((
struct RBasic *)(obj))->klass;
3984 RB_WARN_CATEGORY_ALL_BITS = 0x6
3986enum rb_io_wait_readwrite {RB_IO_WAIT_READABLE, RB_IO_WAIT_WRITABLE};
3991__attribute__((__noreturn__))
3992__attribute__((__nonnull__ (2)))
3993__attribute__((__format__(__printf__, 2, 3)))
3994void rb_raise(VALUE exc, const
char *fmt, ...);
3995__attribute__((__noreturn__))
3996__attribute__((__nonnull__ (1)))
3997__attribute__((__format__(__printf__, 1, 2)))
3998void rb_fatal(const
char *fmt, ...);
3999__attribute__((__cold__))
4000__attribute__((__noreturn__))
4001__attribute__((__nonnull__ (1)))
4002__attribute__((__format__(__printf__, 1, 2)))
4003void rb_bug(const
char *fmt, ...);
4004__attribute__((__noreturn__))
4005__attribute__((__nonnull__ ()))
4007__attribute__((__noreturn__))
4009__attribute__((__noreturn__))
4011__attribute__((__noreturn__))
4012__attribute__((__nonnull__ (2)))
4014__attribute__((__noreturn__))
4016__attribute__((__noreturn__))
4018__attribute__((__noreturn__))
4020__attribute__((__noreturn__))
4022__attribute__((__noreturn__))
4024__attribute__((__noreturn__))
4028__attribute__((__noreturn__))
4030__attribute__((__noreturn__))
4032__attribute__((__noreturn__))
4033__attribute__((__nonnull__ ()))
4035__attribute__((__noreturn__))
4037__attribute__((__noreturn__))
4039__attribute__((__cold__))
4040__attribute__((__noreturn__))
4044__attribute__((__nonnull__ (1)))
4045__attribute__((__format__(__printf__, 1, 2)))
4047__attribute__((__nonnull__ (2)))
4048__attribute__((__format__(__printf__, 2, 3)))
4050__attribute__((__nonnull__ (1, 3)))
4051__attribute__((__format__(__printf__, 3, 4)))
4053__attribute__((__nonnull__ (1)))
4054__attribute__((__format__(__printf__, 1, 2)))
4056__attribute__((__cold__))
4057__attribute__((__nonnull__ (1)))
4058__attribute__((__format__(__printf__, 1, 2)))
4059void rb_warn(const
char *fmt, ...);
4060__attribute__((__cold__))
4061__attribute__((__nonnull__ (2)))
4062__attribute__((__format__(__printf__, 2, 3)))
4064__attribute__((__nonnull__ (1, 3)))
4065__attribute__((__format__(__printf__, 3, 4)))
4066void rb_compile_warn(const
char *file,
int line, const
char *fmt, ...);
4067__attribute__((__nonnull__ (2, 4)))
4068__attribute__((__format__(__printf__, 4, 5)))
4106__attribute__((__cold__))
4110__attribute__((__pure__))
4111__attribute__((__artificial__))
4112static inline enum ruby_value_type
4117 return ((
enum ruby_value_type)ret);
4119__attribute__((__pure__))
4133__attribute__((__pure__))
4134static inline enum ruby_value_type
4159 ((__builtin_expect(!!(!!(
RB_FLONUM_P(obj))), 1)) ? ((
void)0) : __builtin_unreachable());
4163__attribute__((__pure__))
4164__attribute__((__artificial__))
4178__attribute__((__pure__))
4179__attribute__((__artificial__))
4190__attribute__((__pure__))
4191__attribute__((__artificial__))
4197__attribute__((__pure__))
4198__attribute__((__artificial__))
4199__attribute__((__always_inline__))
inline
4201rbimpl_RB_TYPE_P_fastpath(VALUE obj,
enum ruby_value_type t)
4234__attribute__((__pure__))
4235__attribute__((__artificial__))
4237RB_TYPE_P(VALUE obj,
enum ruby_value_type t)
4239 if (__builtin_constant_p(t)) {
4240 return rbimpl_RB_TYPE_P_fastpath(obj, t);
4246__attribute__((__pure__))
4247__attribute__((__artificial__))
4248static inline _Bool rbimpl_rtypeddata_p(VALUE obj);
4249__attribute__((__artificial__))
4253 if ((__builtin_expect(!!(!
RB_TYPE_P(v, t)), 0))) {
4254 goto unexpected_type;
4256 else if (t ==
RUBY_T_DATA && rbimpl_rtypeddata_p(v)) {
4257 goto unexpected_type;
4278 __attribute__((__deprecated__ (
"taintedness turned out to be a wrong idea.")))
4282 __attribute__((__deprecated__ (
"trustedness turned out to be a wrong idea.")))
4312 __attribute__((__deprecated__ (
"It seems there is no actual usage of this enum.")))
4317void rb_obj_infect(VALUE victim, VALUE carrier);
4318void rb_freeze_singleton_class(VALUE
klass);
4321__attribute__((__pure__))
4322__attribute__((__artificial__))
4323__attribute__((__always_inline__))
inline
4337__attribute__((__pure__))
4338__attribute__((__artificial__))
4345__attribute__((__pure__))
4346__attribute__((__artificial__))
4357__attribute__((__pure__))
4358__attribute__((__artificial__))
4364__attribute__((__pure__))
4365__attribute__((__artificial__))
4371__attribute__((__pure__))
4372__attribute__((__artificial__))
4378__attribute__((__pure__))
4379__attribute__((__artificial__))
4386__attribute__((__artificial__))
4388rbimpl_fl_set_raw_raw(
struct RBasic *obj, VALUE
flags)
4390 obj->flags |=
flags;
4392__attribute__((__artificial__))
4397 rbimpl_fl_set_raw_raw(((
struct RBasic *)(obj)),
flags);
4399__attribute__((__artificial__))
4408__attribute__((__artificial__))
4410rbimpl_fl_unset_raw_raw(
struct RBasic *obj, VALUE
flags)
4412 obj->flags &= ~flags;
4414__attribute__((__artificial__))
4419 rbimpl_fl_unset_raw_raw(((
struct RBasic *)(obj)),
flags);
4421__attribute__((__artificial__))
4430__attribute__((__artificial__))
4432rbimpl_fl_reverse_raw_raw(
struct RBasic *obj, VALUE
flags)
4434 obj->flags ^=
flags;
4436__attribute__((__artificial__))
4441 rbimpl_fl_reverse_raw_raw(((
struct RBasic *)(obj)),
flags);
4443__attribute__((__artificial__))
4451__attribute__((__pure__))
4452__attribute__((__artificial__))
4453__attribute__((__deprecated__ (
"taintedness turned out to be a wrong idea.")))
4459__attribute__((__pure__))
4460__attribute__((__artificial__))
4461__attribute__((__deprecated__ (
"taintedness turned out to be a wrong idea.")))
4467__attribute__((__pure__))
4468__attribute__((__artificial__))
4469__attribute__((__deprecated__ (
"taintedness turned out to be a wrong idea.")))
4475__attribute__((__artificial__))
4476__attribute__((__deprecated__ (
"taintedness turned out to be a wrong idea.")))
4482__attribute__((__artificial__))
4483__attribute__((__deprecated__ (
"taintedness turned out to be a wrong idea.")))
4489__attribute__((__artificial__))
4490__attribute__((__deprecated__ (
"taintedness turned out to be a wrong idea.")))
4496__attribute__((__artificial__))
4497__attribute__((__deprecated__ (
"taintedness turned out to be a wrong idea.")))
4503__attribute__((__pure__))
4504__attribute__((__artificial__))
4510__attribute__((__pure__))
4511__attribute__((__artificial__))
4522__attribute__((__artificial__))
4534 rb_freeze_singleton_class(x);
4538enum ruby_rstring_flags {
4544enum ruby_rstring_consts {
4546 RSTRING_EMBED_LEN_MAX = ((int)(
sizeof(VALUE[3]) / (
sizeof(char)))) - 1
4560 char ary[RSTRING_EMBED_LEN_MAX + 1];
4572__attribute__((__error__ (
"rb_check_safe_str() and Check_SafeStr() are obsolete; use StringValue() instead")))
4573void rb_check_safe_str(VALUE);
4574void rb_debug_rstring_null_ptr(const
char *func);
4577__attribute__((__pure__))
4578__attribute__((__artificial__))
4585 f &= RSTRING_EMBED_LEN_MASK;
4586 f >>= RSTRING_EMBED_LEN_SHIFT;
4591__attribute__((__pure__))
4592__attribute__((__artificial__))
4594rbimpl_rstring_getmem(VALUE str)
4598 return *((
struct RString *)(str));
4603 retval.as.heap.ptr = ((
struct RString *)(str))->as.embed.ary;
4609__attribute__((__pure__))
4610__attribute__((__artificial__))
4614 return rbimpl_rstring_getmem(str).as.heap.len;
4616__attribute__((__artificial__))
4620 char *
ptr = rbimpl_rstring_getmem(str).as.heap.ptr;
4621 if ((__builtin_expect(!!(!
ptr), 0))) {
4622 rb_debug_rstring_null_ptr(
"RSTRING_PTR");
4626__attribute__((__artificial__))
4630 struct RString buf = rbimpl_rstring_getmem(str);
4631 if ((__builtin_expect(!!(! buf.as.heap.ptr), 0))) {
4632 rb_debug_rstring_null_ptr(
"RSTRING_END");
4634 return &buf.as.heap.ptr[buf.as.heap.len];
4636__attribute__((__artificial__))
4642__attribute__((__const__))
4644__attribute__((__artificial__))
4660double rb_num2dbl(VALUE num);
4661__attribute__((__pure__))
4678 if ((((n) < (0x7fffffffffffffffL / 2) + 1) && ((n) >= ((-0x7fffffffffffffffL - 1L) / 2))))
return RB_INT2FIX((
long)n);
4684 if (((n) < (0x7fffffffffffffffL / 2) + 1))
return RB_INT2FIX((
long)n);
4687static inline long long
4695static inline unsigned long long
4721typedef unsigned long st_data_t;
4723typedef st_data_t st_index_t;
4724typedef int st_compare_func(st_data_t, st_data_t);
4725typedef st_index_t st_hash_func(st_data_t);
4726typedef char st_check_for_sizeof_st_index_t[8 == (int)
sizeof(st_index_t) ? 1 : -1];
4728 int (*compare)(st_data_t, st_data_t);
4729 st_index_t (*hash)(st_data_t);
4734 unsigned char entry_power, bin_power, size_ind;
4735 unsigned int rebuilds_num;
4737 st_index_t num_entries;
4739 st_index_t entries_start, entries_bound;
4742enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK, ST_REPLACE};
4745st_table *rb_st_init_numtable(
void);
4746st_table *rb_st_init_numtable_with_size(st_index_t);
4747st_table *rb_st_init_strtable(
void);
4748st_table *rb_st_init_strtable_with_size(st_index_t);
4749st_table *rb_st_init_strcasetable(
void);
4750st_table *rb_st_init_strcasetable_with_size(st_index_t);
4751int rb_st_delete(
st_table *, st_data_t *, st_data_t *);
4752int rb_st_delete_safe(
st_table *, st_data_t *, st_data_t *, st_data_t);
4753int rb_st_shift(
st_table *, st_data_t *, st_data_t *);
4754int rb_st_insert(
st_table *, st_data_t, st_data_t);
4755int rb_st_insert2(
st_table *, st_data_t, st_data_t, st_data_t (*)(st_data_t));
4756int rb_st_lookup(
st_table *, st_data_t, st_data_t *);
4757int rb_st_get_key(
st_table *, st_data_t, st_data_t *);
4758typedef int st_update_callback_func(st_data_t *key, st_data_t *value, st_data_t arg,
int existing);
4759int rb_st_update(
st_table *table, st_data_t key, st_update_callback_func *func, st_data_t arg);
4760typedef int st_foreach_callback_func(st_data_t, st_data_t, st_data_t);
4761typedef int st_foreach_check_callback_func(st_data_t, st_data_t, st_data_t,
int);
4762int rb_st_foreach_with_replace(
st_table *tab, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg);
4763int rb_st_foreach(
st_table *, st_foreach_callback_func *, st_data_t);
4764int rb_st_foreach_check(
st_table *, st_foreach_check_callback_func *, st_data_t, st_data_t);
4765st_index_t rb_st_keys(
st_table *table, st_data_t *keys, st_index_t size);
4766st_index_t rb_st_keys_check(
st_table *table, st_data_t *keys, st_index_t size, st_data_t never);
4767st_index_t rb_st_values(
st_table *table, st_data_t *values, st_index_t size);
4768st_index_t rb_st_values_check(
st_table *table, st_data_t *values, st_index_t size, st_data_t never);
4769void rb_st_add_direct(
st_table *, st_data_t, st_data_t);
4771void rb_st_cleanup_safe(
st_table *, st_data_t);
4774__attribute__((__const__))
int rb_st_numcmp(st_data_t, st_data_t);
4775__attribute__((__const__)) st_index_t rb_st_numhash(st_data_t);
4776__attribute__((__pure__))
int rb_st_locale_insensitive_strcasecmp(
const char *s1,
const char *s2);
4777__attribute__((__pure__))
int rb_st_locale_insensitive_strncasecmp(
const char *s1,
const char *s2,
size_t n);
4778__attribute__((__pure__))
size_t rb_st_memsize(
const st_table *);
4779__attribute__((__pure__)) st_index_t rb_st_hash(
const void *ptr,
size_t len, st_index_t h);
4780__attribute__((__const__)) st_index_t rb_st_hash_uint32(st_index_t h, uint32_t i);
4781__attribute__((__const__)) st_index_t rb_st_hash_uint(st_index_t h, st_index_t i);
4782__attribute__((__const__)) st_index_t rb_st_hash_end(st_index_t h);
4783__attribute__((__const__)) st_index_t rb_st_hash_start(st_index_t h);
4784void rb_hash_bulk_insert_into_st_table(
long,
const VALUE *, VALUE);
4787__attribute__((__const__))
4789__attribute__((__artificial__))
4795 x &= (0x7fffffffffffffffL / 2);
4798 x |= ((-0x7fffffffffffffffL - 1L) / 2);
4801 unsigned long y = ((
unsigned long)x);
4810__attribute__((__pure__))
4811__attribute__((__artificial__))
4818__attribute__((__pure__))
4819__attribute__((__artificial__))
4834 const char *filename,
4848 const char *filename,
4859 VALUE a, VALUE *slot, VALUE b,
4861 const char *filename,
4866 rb_obj_written(a, ((VALUE)
RUBY_Qundef) , b, filename, line);
4869enum ruby_rarray_flags {
4875enum ruby_rarray_consts {
4877 RARRAY_EMBED_LEN_MAX = ((int)(
sizeof(VALUE[3]) / (
sizeof(
VALUE))))
4891 const VALUE
ary[RARRAY_EMBED_LEN_MAX];
4896VALUE *rb_ary_ptr_use_start(VALUE ary);
4897void rb_ary_ptr_use_end(VALUE a);
4901__attribute__((__pure__))
4902__attribute__((__artificial__))
4909 f &= RARRAY_EMBED_LEN_MASK;
4913__attribute__((__pure__))
4922 return ((
struct RArray *)(a))->as.heap.len;
4925__attribute__((__artificial__))
4931__attribute__((__pure__))
4932__attribute__((__artificial__))
4939__attribute__((__pure__))
4940static inline const VALUE *
4941rb_array_const_ptr_transient(VALUE a)
4945 return (((
struct RArray *)(a))->as.ary);
4948 return (((
struct RArray *)(a))->as.heap.ptr);
4951static inline const VALUE *
4952rb_array_const_ptr(VALUE a)
4958 return rb_array_const_ptr_transient(a);
4960static inline VALUE *
4961rb_array_ptr_use_start(VALUE a,
4963 int allow_transient)
4966 if (!allow_transient) {
4971 return rb_ary_ptr_use_start(a);
4974rb_array_ptr_use_end(VALUE a,
4976 int allow_transient)
4979 rb_ary_ptr_use_end(a);
4981static inline VALUE *
4985 VALUE tmp = (1 ?
rb_obj_wb_unprotect(ary,
"./include/ruby/internal/core/rarray.h", 555) : ary);
4986 return ((VALUE *)rb_array_const_ptr(tmp));
4991 do { ((void)0);
const VALUE rbimpl_ary = (ary); VALUE *ptr = rb_array_ptr_use_start(rbimpl_ary, (1)); (rb_obj_write((VALUE)(ary), (VALUE *)(&ptr[i]), (VALUE)(v),
"./include/ruby/internal/core/rarray.h", 574)); rb_array_ptr_use_end(rbimpl_ary, (1)); }
while (0);
5010enum ruby_rmodule_flags {
5018VALUE rb_class_get_superclass(VALUE klass);
5032extern VALUE rb_cObject;
5035__attribute__((__warning__ (
"untyped Data is unsafe; use TypedData instead"))) __attribute__((__deprecated__ ("by TypedData")))
5042rb_data_object_get(VALUE obj)
5045 return ((
struct RData *)(obj))->data;
5047__attribute__((__warning__ (
"untyped Data is unsafe; use TypedData instead"))) __attribute__((__deprecated__ ("by TypedData")))
5049rb_data_object_get_warning(VALUE obj)
5051 return rb_data_object_get(obj);
5056 VALUE result =
rb_data_object_zalloc( (
klass), (size), ((
void (*)(
void *))(mark_func)), ((
void (*)(
void *))(free_func))); (*datap) = ((
void *)((
struct RData *)(result))->data); ((void)(*datap));
5059__attribute__((__deprecated__ (
"by: rb_data_object_wrap")))
5065__attribute__((__deprecated__ (
"by: rb_cObject. Will be removed in 3.1.")))
5066__attribute__((__pure__))
5085enum ruby_robject_flags {
5088enum ruby_robject_consts {
5103__attribute__((__pure__))
5104__attribute__((__artificial__))
5105static inline uint32_t
5113 return ((
struct RObject *)(obj))->as.heap.numiv;
5116__attribute__((__pure__))
5117__attribute__((__artificial__))
5118static inline VALUE *
5127 return ptr->as.heap.ivptr;
5130struct re_patter_buffer;
5137__attribute__((__pure__))
5138__attribute__((__artificial__))
5147__attribute__((__pure__))
5148__attribute__((__artificial__))
5154__attribute__((__pure__))
5155__attribute__((__artificial__))
5161__attribute__((__pure__))
5162__attribute__((__artificial__))
5175__attribute__((__artificial__))
5182__attribute__((__artificial__))
5189__attribute__((__artificial__))
5198rbimpl_typeddata_flags {
5199 RUBY_TYPED_FREE_IMMEDIATELY = 1,
5210 size_t (*
dsize)(
const void *);
5226__attribute__((__nonnull__ (3)))
5230int rb_typeddata_is_kind_of(VALUE obj, const
rb_data_type_t *data_type);
5231void *rb_check_typeddata(VALUE obj, const
rb_data_type_t *data_type);
5234__attribute__((__pure__))
5235__attribute__((__artificial__))
5237rbimpl_rtypeddata_p(VALUE obj)
5239 return ((
struct RTypedData *)(obj))->typed_flag == 1;
5241__attribute__((__pure__))
5242__attribute__((__artificial__))
5246 return rbimpl_rtypeddata_p(obj);
5248__attribute__((__pure__))
5249__attribute__((__artificial__))
5261__attribute__((__deprecated__ (
"by: rb_data_typed_object_wrap")))
5270 _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
5271 _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
5272 _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
5273 _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
5274 _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
5275 _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
5276 _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
5277 _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
5278 _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
5279 _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
5280 _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
5281 _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
5283extern const unsigned short int **__ctype_b_loc (
void)
5284 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
5285extern const __int32_t **__ctype_tolower_loc (
void)
5286 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
5287extern const __int32_t **__ctype_toupper_loc (
void)
5288 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
5289extern int isalnum (
int) __attribute__ ((__nothrow__ , __leaf__));
5290extern int isalpha (
int) __attribute__ ((__nothrow__ , __leaf__));
5291extern int iscntrl (
int) __attribute__ ((__nothrow__ , __leaf__));
5292extern int isdigit (
int) __attribute__ ((__nothrow__ , __leaf__));
5293extern int islower (
int) __attribute__ ((__nothrow__ , __leaf__));
5294extern int isgraph (
int) __attribute__ ((__nothrow__ , __leaf__));
5295extern int isprint (
int) __attribute__ ((__nothrow__ , __leaf__));
5296extern int ispunct (
int) __attribute__ ((__nothrow__ , __leaf__));
5297extern int isspace (
int) __attribute__ ((__nothrow__ , __leaf__));
5298extern int isupper (
int) __attribute__ ((__nothrow__ , __leaf__));
5299extern int isxdigit (
int) __attribute__ ((__nothrow__ , __leaf__));
5300extern int tolower (
int __c) __attribute__ ((__nothrow__ , __leaf__));
5301extern int toupper (
int __c) __attribute__ ((__nothrow__ , __leaf__));
5302extern int isblank (
int) __attribute__ ((__nothrow__ , __leaf__));
5303extern int isctype (
int __c,
int __mask) __attribute__ ((__nothrow__ , __leaf__));
5304extern int isascii (
int __c) __attribute__ ((__nothrow__ , __leaf__));
5305extern int toascii (
int __c) __attribute__ ((__nothrow__ , __leaf__));
5306extern int _toupper (
int) __attribute__ ((__nothrow__ , __leaf__));
5307extern int _tolower (
int) __attribute__ ((__nothrow__ , __leaf__));
5308extern __inline __attribute__ ((__gnu_inline__))
int
5309__attribute__ ((__nothrow__ , __leaf__)) tolower (
int __c)
5311 return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c;
5313extern __inline __attribute__ ((__gnu_inline__))
int
5314__attribute__ ((__nothrow__ , __leaf__)) toupper (
int __c)
5316 return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c;
5318extern int isalnum_l (
int,
locale_t) __attribute__ ((__nothrow__ , __leaf__));
5319extern int isalpha_l (
int,
locale_t) __attribute__ ((__nothrow__ , __leaf__));
5320extern int iscntrl_l (
int,
locale_t) __attribute__ ((__nothrow__ , __leaf__));
5321extern int isdigit_l (
int,
locale_t) __attribute__ ((__nothrow__ , __leaf__));
5322extern int islower_l (
int,
locale_t) __attribute__ ((__nothrow__ , __leaf__));
5323extern int isgraph_l (
int,
locale_t) __attribute__ ((__nothrow__ , __leaf__));
5324extern int isprint_l (
int,
locale_t) __attribute__ ((__nothrow__ , __leaf__));
5325extern int ispunct_l (
int,
locale_t) __attribute__ ((__nothrow__ , __leaf__));
5326extern int isspace_l (
int,
locale_t) __attribute__ ((__nothrow__ , __leaf__));
5327extern int isupper_l (
int,
locale_t) __attribute__ ((__nothrow__ , __leaf__));
5328extern int isxdigit_l (
int,
locale_t) __attribute__ ((__nothrow__ , __leaf__));
5329extern int isblank_l (
int,
locale_t) __attribute__ ((__nothrow__ , __leaf__));
5330extern int __tolower_l (
int __c,
locale_t __l) __attribute__ ((__nothrow__ , __leaf__));
5331extern int tolower_l (
int __c,
locale_t __l) __attribute__ ((__nothrow__ , __leaf__));
5332extern int __toupper_l (
int __c,
locale_t __l) __attribute__ ((__nothrow__ , __leaf__));
5333extern int toupper_l (
int __c,
locale_t __l) __attribute__ ((__nothrow__ , __leaf__));
5337__attribute__((__nonnull__ ()))
5338int rb_st_locale_insensitive_strcasecmp(const
char *s1, const
char *s2);
5339__attribute__((__nonnull__ ()))
5340int rb_st_locale_insensitive_strncasecmp(const
char *s1, const
char *s2,
size_t n);
5341__attribute__((__nonnull__ (1)))
5342unsigned long ruby_strtoul(const
char *str,
char **endptr,
int base);
5345__attribute__((__const__))
5347__attribute__((__artificial__))
5351 return '\0' <= c && c <=
'\x7f';
5353__attribute__((__const__))
5355__attribute__((__artificial__))
5359 return 'A' <= c && c <=
'Z';
5361__attribute__((__const__))
5363__attribute__((__artificial__))
5367 return 'a' <= c && c <=
'z';
5369__attribute__((__const__))
5371__attribute__((__artificial__))
5377__attribute__((__const__))
5379__attribute__((__artificial__))
5383 return '0' <= c && c <=
'9';
5385__attribute__((__const__))
5387__attribute__((__artificial__))
5393__attribute__((__const__))
5395__attribute__((__artificial__))
5399 return rb_isdigit(c) || (
'A' <= c && c <=
'F') || (
'a' <= c && c <=
'f');
5401__attribute__((__const__))
5403__attribute__((__artificial__))
5407 return c ==
' ' || c ==
'\t';
5409__attribute__((__const__))
5411__attribute__((__artificial__))
5415 return c ==
' ' || (
'\t' <= c && c <=
'\r');
5417__attribute__((__const__))
5419__attribute__((__artificial__))
5423 return (
'\0' <= c && c <
' ') || c ==
'\x7f';
5425__attribute__((__const__))
5427__attribute__((__artificial__))
5431 return ' ' <= c && c <=
'\x7e';
5433__attribute__((__const__))
5435__attribute__((__artificial__))
5441__attribute__((__const__))
5443__attribute__((__artificial__))
5447 return '!' <= c && c <=
'\x7e';
5449__attribute__((__const__))
5451__attribute__((__artificial__))
5457__attribute__((__const__))
5459__attribute__((__artificial__))
5467__attribute__((__nonnull__ ()))
5469__attribute__((__nonnull__ (1)))
5471__attribute__((__nonnull__ (1)))
5473VALUE
rb_funcall(VALUE recv, ID mid,
int n, ...);
5474VALUE
rb_funcallv(VALUE recv, ID mid,
int argc, const VALUE *argv);
5475VALUE
rb_funcallv_kw(VALUE recv, ID mid,
int argc, const VALUE *argv,
int kw_splat);
5485__attribute__((__nonnull__ (2)))
5486int rb_get_kwargs(VALUE keyword_hash, const ID *table,
int required,
int optional, VALUE *values);
5487__attribute__((__nonnull__ ()))
5488VALUE rb_extract_keywords(VALUE *orighash);
5491typedef uint32_t rb_event_flag_t;
5509typedef
int ruby_glob_func(const
char *path, VALUE arg,
void *enc);
5510__attribute__((__nonnull__ ()))
5511void rb_glob(const
char *pattern,
void (*func)(const
char *path, VALUE arg,
void *enc), VALUE arg);
5512__attribute__((__nonnull__ ()))
5514__attribute__((__nonnull__ ()))
5520extern VALUE rb_mKernel;
5523extern VALUE rb_mErrno;
5530extern VALUE rb_cBasicObject;
5531extern VALUE rb_cObject;
5534extern VALUE rb_cClass;
5538extern VALUE rb_cFalseClass;
5547extern VALUE rb_cModule;
5548extern VALUE rb_cRefinement;
5549extern VALUE rb_cNameErrorMesg;
5550extern VALUE rb_cNilClass;
5563extern VALUE rb_cTrueClass;
5565extern VALUE rb_eException;
5566extern VALUE rb_eStandardError;
5567extern VALUE rb_eSystemExit;
5568extern VALUE rb_eInterrupt;
5569extern VALUE rb_eSignal;
5570extern VALUE rb_eFatal;
5571extern VALUE rb_eArgError;
5573extern VALUE rb_eIndexError;
5575extern VALUE rb_eKeyError;
5576extern VALUE rb_eRangeError;
5578extern VALUE rb_eRuntimeError;
5579extern VALUE rb_eFrozenError;
5580extern VALUE rb_eSecurityError;
5581extern VALUE rb_eSystemCallError;
5583extern VALUE rb_eTypeError;
5585extern VALUE rb_eNotImpError;
5586extern VALUE rb_eNoMemError;
5587extern VALUE rb_eNoMethodError;
5592extern VALUE rb_eEncodingError;
5593extern VALUE rb_eEncCompatError;
5594extern VALUE rb_eNoMatchingPatternError;
5595extern VALUE rb_eNoMatchingPatternKeyError;
5596extern VALUE rb_eScriptError;
5597extern VALUE rb_eNameError;
5598extern VALUE rb_eSyntaxError;
5599extern VALUE rb_eLoadError;
5604__attribute__((__pure__))
5612 return rb_cFalseClass;
5615 return rb_cNilClass;
5618 return rb_cTrueClass;
5629 __builtin_unreachable();
5635__attribute__((__nonnull__ ()))
5647__attribute__((__noreturn__))
5664typedef VALUE
rb_block_call_func(VALUE yielded_arg, VALUE callback_arg,
int argc, const VALUE *argv, VALUE blockarg);
5673VALUE
rb_yield_block(VALUE yielded_arg, VALUE callback_arg,
int argc, const VALUE *argv, VALUE blockarg);
5677__attribute__((__deprecated__ ("by:
rb_block_call since 1.9")))
5678VALUE
rb_iterate(VALUE (*func1)(VALUE), VALUE data1, rb_block_call_func_t proc, VALUE data2);
5679VALUE
rb_block_call(VALUE obj, ID mid,
int argc, const VALUE *argv, rb_block_call_func_t proc, VALUE data2);
5680VALUE
rb_block_call_kw(VALUE obj, ID mid,
int argc, const VALUE *argv, rb_block_call_func_t proc, VALUE data2,
int kw_splat);
5681VALUE
rb_rescue(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2);
5682VALUE
rb_rescue2(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2, ...);
5683VALUE
rb_vrescue2(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*r_proc)(VALUE, VALUE), VALUE data2, va_list ap);
5684VALUE
rb_ensure(VALUE (*b_proc)(VALUE), VALUE data1, VALUE (*e_proc)(VALUE), VALUE data2);
5685VALUE
rb_catch(const
char *tag, rb_block_call_func_t func, VALUE
data);
5687__attribute__((__noreturn__))
5688void rb_throw(const
char *tag, VALUE val);
5689__attribute__((__noreturn__))
5699__attribute__((__malloc__))
5700__attribute__((__returns_nonnull__))
5701__attribute__((__alloc_size__ (2)))
5702__attribute__((__nonnull__ ()))
5703void *rb_alloc_tmp_buffer(volatile VALUE *store,
long len);
5704__attribute__((__malloc__))
5705__attribute__((__returns_nonnull__))
5706__attribute__((__alloc_size__ (2,3)))
5707__attribute__((__nonnull__ ()))
5708void *rb_alloc_tmp_buffer_with_count(volatile VALUE *store,
size_t len,
size_t count);
5709void rb_free_tmp_buffer(volatile VALUE *store);
5710__attribute__((__noreturn__))
5711void ruby_malloc_size_overflow(
size_t x,
size_t y);
5717 __extension__
unsigned __int128 da, db, c2;
5721 if (c2 > max)
return 1;
5726__attribute__((__const__))
5728rbimpl_size_mul_overflow(size_t x, size_t y)
5731 ret.left = __builtin_mul_overflow(x, y, &ret.right);
5735rbimpl_size_mul_or_raise(
size_t x,
size_t y)
5738 rbimpl_size_mul_overflow(x, y);
5739 if ((__builtin_expect(!!(! size.left), 1))) {
5743 ruby_malloc_size_overflow(x, y);
5744 __builtin_unreachable();
5750 const size_t total_size = rbimpl_size_mul_or_raise(count, elsize);
5751 const size_t cnt = (total_size +
sizeof(
VALUE) - 1) /
sizeof(
VALUE);
5752 return rb_alloc_tmp_buffer_with_count(store, total_size, cnt);
5757__attribute__((__nonnull__ (1)))
5758__attribute__((__returns_nonnull__))
5760ruby_nonempty_memcpy(
void *dest, const
void *src,
size_t n)
5763 return memcpy(dest, src, n);
5773__attribute__((__nonnull__ ()))
5775__attribute__((__nonnull__ ()))
5777__attribute__((__nonnull__ ()))
5779__attribute__((__nonnull__ ()))
5790VALUE rb_obj_setup(VALUE obj, VALUE klass, VALUE
type);
5791VALUE rb_obj_class(VALUE obj);
5792VALUE rb_singleton_class_clone(VALUE obj);
5793void rb_singleton_class_attached(VALUE klass, VALUE obj);
5797__attribute__((__deprecated__ ("This is no longer how Object
#clone works.")))
5799rb_clone_setup(VALUE clone, VALUE obj)
5803__attribute__((__deprecated__ ("This is no longer how Object#dup works.")))
5805rb_dup_setup(VALUE dup, VALUE obj)
5811__attribute__((__nonnull__ ()))
5813void rb_mem_clear(VALUE *buf, long len)
5816VALUE rb_assoc_new(VALUE car, VALUE cdr);
5817VALUE rb_check_array_type(VALUE obj);
5818VALUE rb_ary_new(void);
5819VALUE rb_ary_new_capa(long capa);
5820VALUE rb_ary_new_from_args(long n, ...);
5821VALUE rb_ary_new_from_values(long n, const VALUE *elts);
5822VALUE rb_ary_tmp_new(long capa);
5823void rb_ary_free(VALUE ary);
5824void rb_ary_modify(VALUE ary);
5825VALUE rb_ary_freeze(VALUE obj);
5826__attribute__((__pure__))
5827VALUE rb_ary_shared_with_p(VALUE lhs, VALUE rhs);
5828VALUE rb_ary_aref(int argc, const VALUE *argv, VALUE ary);
5829VALUE rb_ary_subseq(VALUE ary, long beg, long len);
5830void rb_ary_store(VALUE ary, long key, VALUE val);
5831VALUE rb_ary_dup(VALUE ary);
5832VALUE rb_ary_resurrect(VALUE ary);
5833VALUE rb_ary_to_ary(VALUE obj);
5834VALUE rb_ary_to_s(VALUE ary);
5835VALUE rb_ary_cat(VALUE ary, const VALUE *train, long len);
5836VALUE rb_ary_push(VALUE ary, VALUE elem);
5837VALUE rb_ary_pop(VALUE ary);
5838VALUE rb_ary_shift(VALUE ary);
5839VALUE rb_ary_unshift(VALUE ary, VALUE elem);
5840__attribute__((__pure__))
5841VALUE rb_ary_entry(VALUE ary, long off);
5842VALUE rb_ary_each(VALUE ary);
5843VALUE rb_ary_join(VALUE ary, VALUE sep);
5844VALUE rb_ary_reverse(VALUE ary);
5845VALUE rb_ary_rotate(VALUE ary, long rot);
5846VALUE rb_ary_sort(VALUE ary);
5847VALUE rb_ary_sort_bang(VALUE ary);
5848VALUE rb_ary_delete(VALUE ary, VALUE elem);
5849VALUE rb_ary_delete_at(VALUE ary, long pos);
5850VALUE rb_ary_clear(VALUE ary);
5851VALUE rb_ary_plus(VALUE lhs, VALUE rhs);
5852VALUE rb_ary_concat(VALUE lhs, VALUE rhs);
5853VALUE rb_ary_assoc(VALUE alist, VALUE key);
5854VALUE rb_ary_rassoc(VALUE alist, VALUE key);
5855VALUE rb_ary_includes(VALUE ary, VALUE elem);
5856VALUE rb_ary_cmp(VALUE lhs, VALUE rhs);
5857VALUE rb_ary_replace(VALUE copy, VALUE orig);
5858VALUE rb_get_values_at(VALUE obj, long olen, int argc, const VALUE *argv, VALUE (*func)(VALUE obj, long oidx));
5859VALUE rb_ary_resize(VALUE ary, long len);
5864VALUE rb_exc_new(VALUE etype, const char *ptr, long len);
5865__attribute__((__nonnull__ ()))
5866VALUE rb_exc_new_cstr(VALUE etype, const char *str);
5867VALUE rb_exc_new_str(VALUE etype, VALUE str);
5868__attribute__((__noreturn__))
5869__attribute__((__nonnull__ (1)))
5870__attribute__((__format__(__printf__, 1, 2)))
5871void rb_loaderror(const char *fmt, ...);
5872__attribute__((__noreturn__))
5873__attribute__((__nonnull__ (2)))
5874__attribute__((__format__(__printf__, 2, 3)))
5875void rb_loaderror_with_path(VALUE path, const char *fmt, ...);
5876__attribute__((__noreturn__))
5877__attribute__((__nonnull__ (2)))
5878__attribute__((__format__(__printf__, 2, 3)))
5879void rb_name_error(ID name, const char *fmt, ...);
5880__attribute__((__noreturn__))
5881__attribute__((__nonnull__ (2)))
5882__attribute__((__format__(__printf__, 2, 3)))
5883void rb_name_error_str(VALUE name, const char *fmt, ...);
5884__attribute__((__noreturn__))
5885__attribute__((__nonnull__ (2)))
5886__attribute__((__format__(__printf__, 2, 3)))
5887void rb_frozen_error_raise(VALUE recv, const char *fmt, ...);
5888__attribute__((__noreturn__))
5889__attribute__((__nonnull__ ()))
5890void rb_invalid_str(const char *str, const char *type);
5891__attribute__((__noreturn__))
5892__attribute__((__nonnull__ ()))
5893void rb_error_frozen(const char *what);
5894__attribute__((__noreturn__))
5895void rb_error_frozen_object(VALUE what);
5896void rb_error_untrusted(VALUE);
5897void rb_check_frozen(VALUE obj);
5898void rb_check_trusted(VALUE);
5899void rb_check_copyable(VALUE obj, VALUE orig);
5900__attribute__((__noreturn__))
5901static void rb_error_arity(int argc, int min, int max);
5905rb_check_frozen_inline(VALUE obj)
5907 if ((__builtin_expect(!!(RB_OBJ_FROZEN(obj)), 0))) {
5908 rb_error_frozen_object(obj);
5912rb_check_arity(int argc, int min, int max)
5914 if ((argc < min) || (max != (-1) && argc > max))
5915 rb_error_arity(argc, min, max);
5920__attribute__((__nonnull__ ()))
5921void rb_st_foreach_safe(struct st_table *st, st_foreach_callback_func *func, st_data_t arg);
5922VALUE rb_check_hash_type(VALUE obj);
5923__attribute__((__nonnull__ ()))
5924void rb_hash_foreach(VALUE hash, int (*func)(VALUE key, VALUE val, VALUE arg), VALUE arg);
5925VALUE rb_hash(VALUE obj);
5926VALUE rb_hash_new(void);
5927VALUE rb_hash_dup(VALUE hash);
5928VALUE rb_hash_freeze(VALUE obj);
5929VALUE rb_hash_aref(VALUE hash, VALUE key);
5930VALUE rb_hash_lookup(VALUE hash, VALUE key);
5931VALUE rb_hash_lookup2(VALUE hash, VALUE key, VALUE def);
5932VALUE rb_hash_fetch(VALUE hash, VALUE key);
5933VALUE rb_hash_aset(VALUE hash, VALUE key, VALUE val);
5934VALUE rb_hash_clear(VALUE hash);
5935VALUE rb_hash_delete_if(VALUE hash);
5936VALUE rb_hash_delete(VALUE hash, VALUE key);
5937void rb_hash_bulk_insert(long argc, const VALUE *argv, VALUE hash);
5938typedef VALUE rb_hash_update_func(VALUE newkey, VALUE oldkey, VALUE value);
5939VALUE rb_hash_update_by(VALUE hash1, VALUE hash2, rb_hash_update_func *func);
5940int rb_path_check(const char *path);
5941int rb_env_path_tainted(void);
5942VALUE rb_env_clear(void);
5943VALUE rb_hash_size(VALUE hash);
5948VALUE rb_block_proc(void);
5949VALUE rb_block_lambda(void);
5950VALUE rb_proc_new(rb_block_call_func_t func, VALUE callback_arg);
5951VALUE rb_obj_is_proc(VALUE recv);
5952VALUE rb_proc_call(VALUE recv, VALUE args);
5953VALUE rb_proc_call_kw(VALUE recv, VALUE args, int kw_splat);
5954VALUE rb_proc_call_with_block(VALUE recv, int argc, const VALUE *argv, VALUE proc);
5955VALUE rb_proc_call_with_block_kw(VALUE recv, int argc, const VALUE *argv, VALUE proc, int kw_splat);
5956int rb_proc_arity(VALUE recv);
5957VALUE rb_proc_lambda_p(VALUE recv);
5958VALUE rb_binding_new(void);
5959VALUE rb_obj_method(VALUE recv, VALUE mid);
5960VALUE rb_obj_is_method(VALUE recv);
5961VALUE rb_method_call(int argc, const VALUE *argv, VALUE recv);
5962VALUE rb_method_call_kw(int argc, const VALUE *argv, VALUE recv, int kw_splat);
5963VALUE rb_method_call_with_block(int argc, const VALUE *argv, VALUE recv, VALUE proc);
5964VALUE rb_method_call_with_block_kw(int argc, const VALUE *argv, VALUE recv, VALUE proc, int kw_splat);
5965int rb_mod_method_arity(VALUE mod, ID mid);
5966int rb_obj_method_arity(VALUE obj, ID mid);
5967__attribute__((__nonnull__ (1)))
5968VALUE rb_protect(VALUE (*func)(VALUE args), VALUE args, int *state);
5973__attribute__((__nonnull__ (2, 3)))
5974int rb_scan_args(int argc, const VALUE *argv, const char *fmt, ...);
5975__attribute__((__nonnull__ (3, 4)))
5976int rb_scan_args_kw(int kw_splat, int argc, const VALUE *argv, const char *fmt, ...);
5977__attribute__((__error__ ("bad scan arg format")))
5978void rb_scan_args_bad_format(const char*);
5979__attribute__((__error__ ("variable argument length doesn't match")))
5980void rb_scan_args_length_mismatch(const char*,int);
5984rb_scan_args_keyword_p(int kw_flag, VALUE last)
5988 return !! rb_keyword_given_p();
5992 return RB_TYPE_P(last, RUBY_T_HASH);
5997__attribute__((__always_inline__)) inline
5999rb_scan_args_lead_p(const char *fmt)
6001 return (((unsigned char)((fmt[0])-'0'))<10);
6003__attribute__((__always_inline__)) inline
6005rb_scan_args_n_lead(const char *fmt)
6007 return (rb_scan_args_lead_p(fmt) ? fmt[0]-'0' : 0);
6009__attribute__((__always_inline__)) inline
6011rb_scan_args_opt_p(const char *fmt)
6013 return (rb_scan_args_lead_p(fmt) && (((unsigned char)((fmt[1])-'0'))<10));
6015__attribute__((__always_inline__)) inline
6017rb_scan_args_n_opt(const char *fmt)
6019 return (rb_scan_args_opt_p(fmt) ? fmt[1]-'0' : 0);
6021__attribute__((__always_inline__)) inline
6023rb_scan_args_var_idx(const char *fmt)
6025 return (!rb_scan_args_lead_p(fmt) ? 0 : !(((unsigned char)((fmt[1])-'0'))<10) ? 1 : 2);
6027__attribute__((__always_inline__)) inline
6029rb_scan_args_f_var(const char *fmt)
6031 return (fmt[rb_scan_args_var_idx(fmt)]=='*');
6033__attribute__((__always_inline__)) inline
6035rb_scan_args_trail_idx(const char *fmt)
6037 const int idx = rb_scan_args_var_idx(fmt);
6038 return idx+(fmt[idx]=='*');
6040__attribute__((__always_inline__)) inline
6042rb_scan_args_n_trail(const char *fmt)
6044 const int idx = rb_scan_args_trail_idx(fmt);
6045 return ((((unsigned char)((fmt[idx])-'0'))<10) ? fmt[idx]-'0' : 0);
6047__attribute__((__always_inline__)) inline
6049rb_scan_args_hash_idx(const char *fmt)
6051 const int idx = rb_scan_args_trail_idx(fmt);
6052 return idx+(((unsigned char)((fmt[idx])-'0'))<10);
6054__attribute__((__always_inline__)) inline
6056rb_scan_args_f_hash(const char *fmt)
6058 return (fmt[rb_scan_args_hash_idx(fmt)]==':');
6060__attribute__((__always_inline__)) inline
6062rb_scan_args_block_idx(const char *fmt)
6064 const int idx = rb_scan_args_hash_idx(fmt);
6065 return idx+(fmt[idx]==':');
6067__attribute__((__always_inline__)) inline
6069rb_scan_args_f_block(const char *fmt)
6071 return (fmt[rb_scan_args_block_idx(fmt)]=='&');
6073__attribute__((__always_inline__)) inline
6075rb_scan_args_set(int kw_flag, int argc, const VALUE *argv,
6076 int n_lead, int n_opt, int n_trail,
6077 _Bool f_var, _Bool f_hash, _Bool f_block,
6078 VALUE *vars[], const char *fmt [[maybe_unused]], int varc [[maybe_unused]])
6082 int i, argi = 0, vari = 0;
6083 VALUE *var, hash = ((VALUE)RUBY_Qnil);
6084 const int n_mand = n_lead + n_trail;
6085 if (f_hash && argc > 0) {
6086 VALUE last = argv[argc - 1];
6087 if (rb_scan_args_keyword_p(kw_flag, last)) {
6088 hash = rb_hash_dup(last);
6092 if (argc < n_mand) {
6095 for (i = 0; i < n_lead; i++) {
6097 if (var) *var = argv[argi];
6100 for (i = 0; i < n_opt; i++) {
6102 if (argi < argc - n_trail) {
6103 if (var) *var = argv[argi];
6107 if (var) *var = ((VALUE)RUBY_Qnil);
6111 int n_var = argc - argi - n_trail;
6114 if (var) *var = rb_ary_new_from_values(n_var, &argv[argi]);
6118 if (var) *var = rb_ary_new();
6121 for (i = 0; i < n_trail; i++) {
6123 if (var) *var = argv[argi];
6128 if (var) *var = hash;
6132 if (rb_block_given_p()) {
6133 *var = rb_block_proc();
6136 *var = ((VALUE)RUBY_Qnil);
6143 rb_error_arity(argc, n_mand, f_var ? (-1) : n_mand + n_opt);
6144 __builtin_unreachable();
6148ID rb_sym2id(VALUE obj);
6149VALUE rb_id2sym(ID id);
6150__attribute__((__nonnull__ ()))
6151ID rb_intern(const char *name);
6152ID rb_intern2(const char *name, long len);
6153ID rb_intern_str(VALUE str);
6154const char *rb_id2name(ID id);
6155__attribute__((__nonnull__ ()))
6156ID rb_check_id(volatile VALUE *namep);
6157ID rb_to_id(VALUE str);
6158VALUE rb_id2str(ID id);
6159VALUE rb_sym2str(VALUE id);
6160VALUE rb_to_symbol(VALUE name);
6161__attribute__((__nonnull__ ()))
6162VALUE rb_check_symbol(volatile VALUE *namep);
6165__attribute__((__pure__))
6166__attribute__((__nonnull__ ()))
6168rb_intern_const(const char *str)
6170 size_t len = strlen(str);
6171 return rb_intern2(str, ((long)len));
6174__attribute__((__nonnull__ ()))
6176rbimpl_intern_const(ID *ptr, const char *str)
6179 *ptr = rb_intern_const(str);
6185typedef VALUE rb_gvar_getter_t(ID id, VALUE *data);
6186typedef void rb_gvar_setter_t(VALUE val, ID id, VALUE *data);
6187typedef void rb_gvar_marker_t(VALUE *var);
6188rb_gvar_getter_t rb_gvar_undef_getter;
6189rb_gvar_setter_t rb_gvar_undef_setter;
6190rb_gvar_marker_t rb_gvar_undef_marker;
6191rb_gvar_getter_t rb_gvar_val_getter;
6192rb_gvar_setter_t rb_gvar_val_setter;
6193rb_gvar_marker_t rb_gvar_val_marker;
6194rb_gvar_getter_t rb_gvar_var_getter;
6195rb_gvar_setter_t rb_gvar_var_setter;
6196rb_gvar_marker_t rb_gvar_var_marker;
6197__attribute__((__noreturn__))
6198rb_gvar_setter_t rb_gvar_readonly_setter;
6199__attribute__((__nonnull__ ()))
6200void rb_define_variable(const char *name, VALUE *var);
6201__attribute__((__nonnull__ (1)))
6202void rb_define_virtual_variable(const char *name, rb_gvar_getter_t *getter, rb_gvar_setter_t *setter);
6203__attribute__((__nonnull__ (1)))
6204void rb_define_hooked_variable(const char *name, VALUE *var, rb_gvar_getter_t *getter, rb_gvar_setter_t *setter);
6205__attribute__((__nonnull__ ()))
6206void rb_define_readonly_variable(const char *name, const VALUE *var);
6207__attribute__((__nonnull__ ()))
6208void rb_define_const(VALUE klass, const char *name, VALUE val);
6209__attribute__((__nonnull__ ()))
6210void rb_define_global_const(const char *name, VALUE val);
6211__attribute__((__nonnull__ ()))
6212void rb_deprecate_constant(VALUE mod, const char *name);
6213__attribute__((__nonnull__ ()))
6214VALUE rb_gv_set(const char *name, VALUE val);
6215__attribute__((__nonnull__ ()))
6216VALUE rb_gv_get(const char *name);
6217__attribute__((__nonnull__ ()))
6218VALUE rb_iv_get(VALUE obj, const char *name);
6219__attribute__((__nonnull__ ()))
6220VALUE rb_iv_set(VALUE obj, const char *name, VALUE val);
6225VALUE rb_get_path(VALUE obj);
6226VALUE rb_get_path_no_checksafe(VALUE);
6227__attribute__((__error__ (" argument length doesn't match"))) int rb_varargs_bad_length(int,int);
6228const char *rb_class2name(VALUE klass);
6229const char *rb_obj_classname(VALUE obj);
6230void rb_p(VALUE obj);
6231VALUE rb_equal(VALUE lhs, VALUE rhs);
6232VALUE rb_require(const char *feature);
6235VALUE rb_big_new(size_t len, int sign);
6236int rb_bigzero_p(VALUE x);
6237VALUE rb_big_clone(VALUE num);
6238void rb_big_2comp(VALUE num);
6239VALUE rb_big_norm(VALUE x);
6240void rb_big_resize(VALUE big, size_t len);
6241__attribute__((__nonnull__ ()))
6242VALUE rb_cstr_to_inum(const char *str, int base, int badcheck);
6243VALUE rb_str_to_inum(VALUE str, int base, int badcheck);
6244__attribute__((__nonnull__ ()))
6245VALUE rb_cstr2inum(const char *str, int base);
6246VALUE rb_str2inum(VALUE str, int base);
6247VALUE rb_big2str(VALUE x, int base);
6248long rb_big2long(VALUE x);
6249unsigned long rb_big2ulong(VALUE x);
6250long long rb_big2ll(VALUE);
6251unsigned long long rb_big2ull(VALUE);
6252__attribute__((__nonnull__ ()))
6253void rb_big_pack(VALUE val, unsigned long *buf, long num_longs);
6254__attribute__((__nonnull__ ()))
6255VALUE rb_big_unpack(unsigned long *buf, long num_longs);
6256__attribute__((__nonnull__ ()))
6257int rb_uv_to_utf8(char buf[6], unsigned long uv);
6258VALUE rb_dbl2big(double d);
6259double rb_big2dbl(VALUE x);
6260VALUE rb_big_cmp(VALUE lhs, VALUE rhs);
6261VALUE rb_big_eq(VALUE lhs, VALUE rhs);
6262VALUE rb_big_eql(VALUE lhs, VALUE rhs);
6263VALUE rb_big_plus(VALUE x, VALUE y);
6264VALUE rb_big_minus(VALUE x, VALUE y);
6265VALUE rb_big_mul(VALUE x, VALUE y);
6266VALUE rb_big_div(VALUE x, VALUE y);
6267VALUE rb_big_idiv(VALUE x, VALUE y);
6268VALUE rb_big_modulo(VALUE x, VALUE y);
6269VALUE rb_big_divmod(VALUE x, VALUE y);
6270VALUE rb_big_pow(VALUE x, VALUE y);
6271VALUE rb_big_and(VALUE x, VALUE y);
6272VALUE rb_big_or(VALUE x, VALUE y);
6273VALUE rb_big_xor(VALUE x, VALUE y);
6274VALUE rb_big_lshift(VALUE x, VALUE y);
6275VALUE rb_big_rshift(VALUE x, VALUE y);
6276__attribute__((__nonnull__ ()))
6277int rb_integer_pack(VALUE val, void *words, size_t numwords, size_t wordsize, size_t nails, int flags);
6278__attribute__((__nonnull__ ()))
6279VALUE rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t nails, int flags);
6280size_t rb_absint_size(VALUE val, int *nlz_bits_ret);
6281size_t rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret);
6282int rb_absint_singlebit_p(VALUE val);
6287int rb_cmpint(VALUE val, VALUE a, VALUE b);
6288__attribute__((__cold__))
6289__attribute__((__noreturn__))
6290void rb_cmperr(VALUE a, VALUE b);
6295VALUE rb_complex_raw(VALUE real, VALUE imag);
6296VALUE rb_complex_new(VALUE real, VALUE imag);
6297VALUE rb_complex_new_polar(VALUE abs, VALUE arg);
6298__attribute__((__deprecated__ ("by: rb_complex_new_polar")))
6299VALUE rb_complex_polar(VALUE abs, VALUE arg);
6300__attribute__((__pure__))
6301VALUE rb_complex_real(VALUE z);
6302__attribute__((__pure__))
6303VALUE rb_complex_imag(VALUE z);
6304VALUE rb_complex_plus(VALUE x, VALUE y);
6305VALUE rb_complex_minus(VALUE x, VALUE y);
6306VALUE rb_complex_mul(VALUE x, VALUE y);
6307VALUE rb_complex_div(VALUE x, VALUE y);
6308VALUE rb_complex_uminus(VALUE z);
6309VALUE rb_complex_conjugate(VALUE z);
6310VALUE rb_complex_abs(VALUE z);
6311VALUE rb_complex_arg(VALUE z);
6312VALUE rb_complex_pow(VALUE base, VALUE exp);
6313VALUE rb_dbl_complex_new(double real, double imag);
6314VALUE rb_Complex(VALUE real, VALUE imag);
6319VALUE rb_fiber_new(rb_block_call_func_t func, VALUE callback_obj);
6320VALUE rb_fiber_current(void);
6321VALUE rb_fiber_alive_p(VALUE fiber);
6322VALUE rb_obj_is_fiber(VALUE obj);
6323VALUE rb_fiber_resume(VALUE fiber, int argc, const VALUE *argv);
6324VALUE rb_fiber_resume_kw(VALUE fiber, int argc, const VALUE *argv, int kw_splat);
6325VALUE rb_fiber_yield(int argc, const VALUE *argv);
6326VALUE rb_fiber_yield_kw(int argc, const VALUE *argv, int kw_splat);
6327VALUE rb_fiber_transfer(VALUE fiber, int argc, const VALUE *argv);
6328VALUE rb_fiber_transfer_kw(VALUE fiber, int argc, const VALUE *argv, int kw_splat);
6329VALUE rb_fiber_raise(VALUE fiber, int argc, const VALUE *argv);
6334VALUE rb_dir_getwd(void);
6339VALUE rb_enum_values_pack(int argc, const VALUE *argv);
6344__attribute__((__noreturn__))
6345void rb_exc_raise(VALUE exc);
6346__attribute__((__noreturn__))
6347void rb_exc_fatal(VALUE exc);
6348__attribute__((__noreturn__))
6349VALUE rb_f_exit(int argc, const VALUE *argv);
6350__attribute__((__noreturn__))
6351VALUE rb_f_abort(int argc, const VALUE *argv);
6352__attribute__((__noreturn__))
6353void rb_interrupt(void);
6354ID rb_frame_this_func(void);
6355__attribute__((__noreturn__))
6356void rb_jump_tag(int state);
6357void rb_obj_call_init(VALUE obj, int argc, const VALUE *argv);
6358void rb_obj_call_init_kw(VALUE, int, const VALUE*, int);
6359ID rb_frame_callee(void);
6360VALUE rb_make_exception(int argc, const VALUE *argv);
6361void rb_set_end_proc(void (*func)(VALUE arg), VALUE arg);
6366typedef VALUE rb_enumerator_size_func(VALUE recv, VALUE argv, VALUE eobj);
6372} rb_arithmetic_sequence_components_t;
6373VALUE rb_enumeratorize(VALUE recv, VALUE meth, int argc, const VALUE *argv);
6374VALUE rb_enumeratorize_with_size(VALUE recv, VALUE meth, int argc, const VALUE *argv, rb_enumerator_size_func *func);
6375VALUE rb_enumeratorize_with_size_kw(VALUE recv, VALUE meth, int argc, const VALUE *argv, rb_enumerator_size_func *func, int kw_splat);
6376__attribute__((__nonnull__ ()))
6377int rb_arithmetic_sequence_extract(VALUE as, rb_arithmetic_sequence_components_t *buf);
6378__attribute__((__nonnull__ ()))
6379VALUE rb_arithmetic_sequence_beg_len_step(VALUE as, long *begp, long *lenp, long *stepp, long len, int err);
6384__attribute__((__nonnull__ ()))
6385VALUE rb_file_s_expand_path(int argc, const VALUE *argv);
6386VALUE rb_file_expand_path(VALUE fname, VALUE dname);
6387__attribute__((__nonnull__ ()))
6388VALUE rb_file_s_absolute_path(int argc, const VALUE *argv);
6389VALUE rb_file_absolute_path(VALUE fname, VALUE dname);
6390VALUE rb_file_dirname(VALUE fname);
6391__attribute__((__nonnull__ ()))
6392int rb_find_file_ext(VALUE *feature, const char *const *exts);
6393VALUE rb_find_file(VALUE path);
6394VALUE rb_file_directory_p(VALUE _, VALUE path);
6395VALUE rb_str_encode_ospath(VALUE path);
6396__attribute__((__nonnull__ ()))
6397__attribute__((__pure__))
6398int rb_is_absolute_path(const char *path);
6399off_t rb_file_size(VALUE file);
6404__attribute__((__cold__))
6405__attribute__((__noreturn__))
6406void rb_memerror(void);
6407__attribute__((__pure__))
6408int rb_during_gc(void);
6409__attribute__((__nonnull__ (1)))
6410void rb_gc_mark_locations(const VALUE *start, const VALUE *end);
6411void rb_mark_tbl(struct st_table *tbl);
6412void rb_mark_tbl_no_pin(struct st_table *tbl);
6413void rb_mark_set(struct st_table *tbl);
6414void rb_mark_hash(struct st_table *tbl);
6415void rb_gc_update_tbl_refs(st_table *ptr);
6416void rb_gc_mark_maybe(VALUE obj);
6417void rb_gc_mark(VALUE obj);
6418void rb_gc_mark_movable(VALUE obj);
6419VALUE rb_gc_location(VALUE obj);
6420__attribute__((__deprecated__ ("this is now a no-op function")))
6421void rb_gc_force_recycle(VALUE obj);
6423void rb_gc_copy_finalizer(VALUE dst, VALUE src);
6424VALUE rb_gc_enable(void);
6425VALUE rb_gc_disable(void);
6426VALUE rb_gc_start(void);
6427VALUE rb_define_finalizer(VALUE obj, VALUE block);
6428VALUE rb_undefine_finalizer(VALUE obj);
6429size_t rb_gc_count(void);
6430size_t rb_gc_stat(VALUE key_or_buf);
6431VALUE rb_gc_latest_gc_info(VALUE key_or_buf);
6432void rb_gc_adjust_memory_usage(ssize_t diff);
6438extern VALUE rb_output_fs;
6440extern VALUE rb_default_rs;
6441extern VALUE rb_output_rs;
6442VALUE rb_io_write(VALUE io, VALUE str);
6443VALUE rb_io_gets(VALUE io);
6444VALUE rb_io_getbyte(VALUE io);
6445VALUE rb_io_ungetc(VALUE io, VALUE c);
6446VALUE rb_io_ungetbyte(VALUE io, VALUE b);
6447VALUE rb_io_close(VALUE io);
6448VALUE rb_io_flush(VALUE io);
6449VALUE rb_io_eof(VALUE io);
6450VALUE rb_io_binmode(VALUE io);
6451VALUE rb_io_ascii8bit_binmode(VALUE io);
6452VALUE rb_io_addstr(VALUE io, VALUE str);
6453VALUE rb_io_printf(int argc, const VALUE *argv, VALUE io);
6454VALUE rb_io_print(int argc, const VALUE *argv, VALUE io);
6455VALUE rb_io_puts(int argc, const VALUE *argv, VALUE io);
6456VALUE rb_io_fdopen(int fd, int flags, const char *path);
6457__attribute__((__nonnull__ ()))
6458VALUE rb_file_open(const char *fname, const char *fmode);
6459__attribute__((__nonnull__ ()))
6460VALUE rb_file_open_str(VALUE fname, const char *fmode);
6462__attribute__((__nonnull__ ()))
6463void rb_write_error(const char *str);
6464void rb_write_error2(const char *str, long len);
6465void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds);
6466__attribute__((__nonnull__ ()))
6467int rb_pipe(int *pipes);
6468int rb_reserved_fd_p(int fd);
6469int rb_cloexec_open(const char *pathname, int flags, mode_t mode);
6470int rb_cloexec_dup(int oldfd);
6471int rb_cloexec_dup2(int oldfd, int newfd);
6472__attribute__((__nonnull__ ()))
6473int rb_cloexec_pipe(int fildes[2]);
6474int rb_cloexec_fcntl_dupfd(int fd, int minfd);
6475void rb_update_max_fd(int fd);
6476void rb_fd_fix_cloexec(int fd);
6481void rb_load(VALUE path, int wrap);
6482void rb_load_protect(VALUE path, int wrap, int *state);
6483__attribute__((__nonnull__ ()))
6484int rb_provided(const char *feature);
6485__attribute__((__nonnull__ (1)))
6486int rb_feature_provided(const char *feature, const char **loading);
6487__attribute__((__nonnull__ ()))
6488void rb_provide(const char *feature);
6489VALUE rb_f_require(VALUE self, VALUE feature);
6490VALUE rb_require_string(VALUE feature);
6491void rb_ext_ractor_safe(_Bool flag);
6496VALUE rb_marshal_dump(VALUE obj, VALUE port);
6497VALUE rb_marshal_load(VALUE port);
6498void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), VALUE (*loader)(VALUE, VALUE));
6503__attribute__((__noreturn__))
6504__attribute__((__cold__))
6505void rb_num_zerodiv(void);
6506VALUE rb_num_coerce_bin(VALUE lhs, VALUE rhs, ID op);
6507VALUE rb_num_coerce_cmp(VALUE lhs, VALUE rhs, ID op);
6508VALUE rb_num_coerce_relop(VALUE lhs, VALUE rhs, ID op);
6509VALUE rb_num_coerce_bit(VALUE lhs, VALUE rhs, ID op);
6510VALUE rb_num2fix(VALUE val);
6511VALUE rb_fix2str(VALUE val, int base);
6512__attribute__((__const__))
6513VALUE rb_dbl_cmp(double lhs, double rhs);
6514extern VALUE rb_int_positive_pow(long x, unsigned long y);
6519VALUE rb_class_new_instance_pass_kw(int argc, const VALUE *argv, VALUE klass);
6520VALUE rb_class_new_instance(int argc, const VALUE *argv, VALUE klass);
6521VALUE rb_class_new_instance_kw(int argc, const VALUE *argv, VALUE klass, int kw_splat);
6522int rb_eql(VALUE lhs, VALUE rhs);
6523VALUE rb_any_to_s(VALUE obj);
6524VALUE rb_inspect(VALUE obj);
6525VALUE rb_obj_is_instance_of(VALUE obj, VALUE klass);
6526VALUE rb_obj_is_kind_of(VALUE obj, VALUE klass);
6527VALUE rb_obj_alloc(VALUE klass);
6528VALUE rb_obj_clone(VALUE obj);
6529VALUE rb_obj_dup(VALUE obj);
6530VALUE rb_obj_init_copy(VALUE src, VALUE dst);
6532VALUE rb_obj_taint(VALUE obj);
6533__attribute__((__pure__))
6535VALUE rb_obj_tainted(VALUE obj);
6537VALUE rb_obj_untaint(VALUE obj);
6539VALUE rb_obj_untrust(VALUE obj);
6540__attribute__((__pure__))
6542VALUE rb_obj_untrusted(VALUE obj);
6544VALUE rb_obj_trust(VALUE obj);
6545VALUE rb_obj_freeze(VALUE obj);
6546__attribute__((__pure__))
6547VALUE rb_obj_frozen_p(VALUE obj);
6548VALUE rb_obj_id(VALUE obj);
6549__attribute__((__const__))
6550VALUE rb_memory_id(VALUE obj);
6551__attribute__((__pure__))
6552VALUE rb_class_real(VALUE klass);
6553__attribute__((__pure__))
6554VALUE rb_class_inherited_p(VALUE scion, VALUE ascendant);
6555__attribute__((__pure__))
6556VALUE rb_class_superclass(VALUE klass);
6557__attribute__((__nonnull__ ()))
6558VALUE rb_convert_type(VALUE val, int type, const char *name, const char *mid);
6559__attribute__((__nonnull__ ()))
6560VALUE rb_check_convert_type(VALUE val, int type, const char *name, const char *mid);
6561__attribute__((__nonnull__ ()))
6562VALUE rb_check_to_integer(VALUE val, const char *mid);
6563VALUE rb_check_to_float(VALUE val);
6564VALUE rb_to_int(VALUE val);
6565VALUE rb_check_to_int(VALUE val);
6566VALUE rb_Integer(VALUE val);
6567VALUE rb_to_float(VALUE val);
6568VALUE rb_Float(VALUE val);
6569VALUE rb_String(VALUE val);
6570VALUE rb_Array(VALUE val);
6571VALUE rb_Hash(VALUE val);
6572__attribute__((__nonnull__ ()))
6573double rb_cstr_to_dbl(const char *str, int mode);
6574double rb_str_to_dbl(VALUE str, int mode);
6579ID rb_id_attrset(ID id);
6580__attribute__((__const__))
6581int rb_is_const_id(ID id);
6582__attribute__((__const__))
6583int rb_is_global_id(ID id);
6584__attribute__((__const__))
6585int rb_is_instance_id(ID id);
6586__attribute__((__const__))
6587int rb_is_attrset_id(ID id);
6588__attribute__((__const__))
6589int rb_is_class_id(ID id);
6590__attribute__((__const__))
6591int rb_is_local_id(ID id);
6592__attribute__((__const__))
6593int rb_is_junk_id(ID);
6594__attribute__((__nonnull__ ()))
6595int rb_symname_p(const char *str);
6596VALUE rb_backref_get(void);
6597void rb_backref_set(VALUE md);
6598VALUE rb_lastline_get(void);
6599void rb_lastline_set(VALUE str);
6600VALUE rb_sym_all_symbols(void);
6605void rb_last_status_set(int status, pid_t pid);
6606VALUE rb_last_status_get(void);
6607__attribute__((__nonnull__ ()))
6608int rb_proc_exec(const char *cmd);
6609__attribute__((__noreturn__))
6610VALUE rb_f_exec(int argc, const VALUE *argv);
6611pid_t rb_waitpid(pid_t pid, int *status, int flags);
6612void rb_syswait(pid_t pid);
6613pid_t rb_spawn(int argc, const VALUE *argv);
6614pid_t rb_spawn_err(int argc, const VALUE *argv, char *errbuf, size_t buflen);
6615VALUE rb_proc_times(VALUE _);
6616VALUE rb_detach_process(pid_t pid);
6621unsigned int rb_genrand_int32(void);
6622double rb_genrand_real(void);
6623void rb_reset_random_seed(void);
6624VALUE rb_random_bytes(VALUE rnd, long n);
6625unsigned int rb_random_int32(VALUE rnd);
6626double rb_random_real(VALUE rnd);
6627unsigned long rb_random_ulong_limited(VALUE rnd, unsigned long limit);
6628unsigned long rb_genrand_ulong_limited(unsigned long i);
6633VALUE rb_range_new(VALUE beg, VALUE end, int excl);
6634__attribute__((__nonnull__ ()))
6635VALUE rb_range_beg_len(VALUE range, long *begp, long *lenp, long len, int err);
6636__attribute__((__nonnull__ ()))
6637int rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp);
6642VALUE rb_rational_raw(VALUE num, VALUE den);
6643VALUE rb_rational_new(VALUE num, VALUE den);
6644VALUE rb_Rational(VALUE num, VALUE den);
6645__attribute__((__pure__))
6646VALUE rb_rational_num(VALUE rat);
6647__attribute__((__pure__))
6648VALUE rb_rational_den(VALUE rat);
6649VALUE rb_flt_rationalize_with_prec(VALUE flt, VALUE prec);
6650VALUE rb_flt_rationalize(VALUE flt);
6655int rb_memcicmp(const void *s1,const void *s2, long n);
6656void rb_match_busy(VALUE md);
6657VALUE rb_reg_nth_defined(int n, VALUE md);
6658VALUE rb_reg_nth_match(int n, VALUE md);
6659int rb_reg_backref_number(VALUE match, VALUE backref);
6660VALUE rb_reg_last_match(VALUE md);
6661VALUE rb_reg_match_pre(VALUE md);
6662VALUE rb_reg_match_post(VALUE md);
6663VALUE rb_reg_match_last(VALUE md);
6664VALUE rb_reg_new_str(VALUE src, int opts);
6665__attribute__((__nonnull__ ()))
6666VALUE rb_reg_new(const char *src, long len, int opts);
6667VALUE rb_reg_alloc(void);
6668VALUE rb_reg_init_str(VALUE re, VALUE s, int options);
6669VALUE rb_reg_match(VALUE re, VALUE str);
6670VALUE rb_reg_match2(VALUE re);
6671int rb_reg_options(VALUE re);
6676extern VALUE rb_argv0;
6677VALUE rb_get_argv(void);
6678__attribute__((__nonnull__ ()))
6679void *rb_load_file(const char *file);
6680void *rb_load_file_str(VALUE file);
6690__attribute__((__nonnull__ ()))
6691void rb_fd_init(rb_fdset_t *f);
6692__attribute__((__nonnull__ ()))
6693void rb_fd_term(rb_fdset_t *f);
6694__attribute__((__nonnull__ ()))
6695void rb_fd_zero(rb_fdset_t *f);
6696__attribute__((__nonnull__ ()))
6697void rb_fd_set(int fd, rb_fdset_t *f);
6698__attribute__((__nonnull__ ()))
6699void rb_fd_clr(int fd, rb_fdset_t *f);
6700__attribute__((__nonnull__ ()))
6701__attribute__((__pure__))
6702int rb_fd_isset(int fd, const rb_fdset_t *f);
6703void rb_fd_copy(rb_fdset_t *dst, const fd_set *src, int max);
6704void rb_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src);
6705int rb_fd_select(int nfds, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds, struct timeval *timeout);
6708__attribute__((__nonnull__ ()))
6709__attribute__((__pure__))
6710static inline fd_set *
6711rb_fd_ptr(const rb_fdset_t *f)
6715__attribute__((__nonnull__ ()))
6716__attribute__((__pure__))
6718rb_fd_max(const rb_fdset_t *f)
6725int rb_thread_fd_select(int nfds, rb_fdset_t *rfds, rb_fdset_t *wfds, rb_fdset_t *efds, struct timeval *timeout);
6730__attribute__((__nonnull__ ()))
6731VALUE rb_f_kill(int argc, const VALUE *argv);
6732void (*ruby_posix_signal(int, void (*)(int)))(int);
6733__attribute__((__pure__))
6734const char *ruby_signal_name(int signo);
6735void ruby_default_signal(int sig);
6740VALUE rb_f_sprintf(int argc, const VALUE *argv);
6741__attribute__((__nonnull__ (1)))
6742__attribute__((__format__(__printf__, 1, 2)))
6743VALUE rb_sprintf(const char *fmt, ...);
6744__attribute__((__nonnull__ (1)))
6745__attribute__((__format__(__printf__, 1, 0)))
6746VALUE rb_vsprintf(const char *fmt, va_list ap);
6747__attribute__((__nonnull__ (2)))
6748__attribute__((__format__(__printf__, 2, 3)))
6749VALUE rb_str_catf(VALUE dst, const char *fmt, ...);
6750__attribute__((__nonnull__ (2)))
6751__attribute__((__format__(__printf__, 2, 0)))
6752VALUE rb_str_vcatf(VALUE dst, const char *fmt, va_list ap);
6753VALUE rb_str_format(int argc, const VALUE *argv, VALUE fmt);
6758VALUE rb_str_new(const char *ptr, long len);
6759VALUE rb_str_new_cstr(const char *ptr);
6760VALUE rb_str_new_shared(VALUE str);
6761VALUE rb_str_new_frozen(VALUE str);
6762VALUE rb_str_new_with_class(VALUE obj, const char *ptr, long len);
6763VALUE rb_tainted_str_new_cstr(const char *ptr);
6764VALUE rb_tainted_str_new(const char *ptr, long len);
6765VALUE rb_external_str_new(const char *ptr, long len);
6766__attribute__((__nonnull__ ()))
6767VALUE rb_external_str_new_cstr(const char *ptr);
6768VALUE rb_locale_str_new(const char *ptr, long len);
6769__attribute__((__nonnull__ ()))
6770VALUE rb_locale_str_new_cstr(const char *ptr);
6771VALUE rb_filesystem_str_new(const char *ptr, long len);
6772__attribute__((__nonnull__ ()))
6773VALUE rb_filesystem_str_new_cstr(const char *ptr);
6774VALUE rb_str_buf_new(long capa);
6775__attribute__((__nonnull__ ()))
6776VALUE rb_str_buf_new_cstr(const char *ptr);
6777VALUE rb_str_tmp_new(long len);
6778VALUE rb_usascii_str_new(const char *ptr, long len);
6779VALUE rb_usascii_str_new_cstr(const char *ptr);
6780VALUE rb_utf8_str_new(const char *ptr, long len);
6781VALUE rb_utf8_str_new_cstr(const char *ptr);
6782VALUE rb_str_new_static(const char *ptr, long len);
6783VALUE rb_usascii_str_new_static(const char *ptr, long len);
6784VALUE rb_utf8_str_new_static(const char *ptr, long len);
6785VALUE rb_str_to_interned_str(VALUE str);
6786VALUE rb_interned_str(const char *ptr, long len);
6787__attribute__((__nonnull__ ()))
6788VALUE rb_interned_str_cstr(const char *ptr);
6789void rb_str_free(VALUE str);
6790void rb_str_shared_replace(VALUE dst, VALUE src);
6791VALUE rb_str_buf_append(VALUE dst, VALUE src);
6792VALUE rb_str_buf_cat(VALUE, const char*, long);
6793VALUE rb_str_buf_cat2(VALUE, const char*);
6794__attribute__((__nonnull__ ()))
6795VALUE rb_str_buf_cat_ascii(VALUE dst, const char *src);
6796VALUE rb_obj_as_string(VALUE obj);
6797VALUE rb_check_string_type(VALUE obj);
6798void rb_must_asciicompat(VALUE obj);
6799VALUE rb_str_dup(VALUE str);
6800VALUE rb_str_resurrect(VALUE str);
6801VALUE rb_str_locktmp(VALUE str);
6802VALUE rb_str_unlocktmp(VALUE str);
6803VALUE rb_str_dup_frozen(VALUE);
6804VALUE rb_str_plus(VALUE lhs, VALUE rhs);
6805VALUE rb_str_times(VALUE str, VALUE num);
6806long rb_str_sublen(VALUE str, long pos);
6807VALUE rb_str_substr(VALUE str, long beg, long len);
6808VALUE rb_str_subseq(VALUE str, long beg, long len);
6809char *rb_str_subpos(VALUE str, long beg, long *len);
6810void rb_str_modify(VALUE str);
6811void rb_str_modify_expand(VALUE str, long capa);
6812VALUE rb_str_freeze(VALUE str);
6813void rb_str_set_len(VALUE str, long len);
6814VALUE rb_str_resize(VALUE str, long len);
6815VALUE rb_str_cat(VALUE dst, const char *src, long srclen);
6816VALUE rb_str_cat_cstr(VALUE dst, const char *src);
6817VALUE rb_str_cat2(VALUE, const char*);
6818VALUE rb_str_append(VALUE dst, VALUE src);
6819VALUE rb_str_concat(VALUE dst, VALUE src);
6820st_index_t rb_memhash(const void *ptr, long len);
6821st_index_t rb_hash_start(st_index_t i);
6822st_index_t rb_str_hash(VALUE str);
6823int rb_str_hash_cmp(VALUE str1, VALUE str2);
6824int rb_str_comparable(VALUE str1, VALUE str2);
6825int rb_str_cmp(VALUE lhs, VALUE rhs);
6826VALUE rb_str_equal(VALUE str1, VALUE str2);
6827VALUE rb_str_drop_bytes(VALUE str, long len);
6828void rb_str_update(VALUE dst, long beg, long len, VALUE src);
6829VALUE rb_str_replace(VALUE dst, VALUE src);
6830VALUE rb_str_inspect(VALUE str);
6831VALUE rb_str_dump(VALUE str);
6832VALUE rb_str_split(VALUE str, const char *delim);
6833rb_gvar_setter_t rb_str_setter;
6834VALUE rb_str_intern(VALUE str);
6835VALUE rb_sym_to_s(VALUE sym);
6836long rb_str_strlen(VALUE str);
6837VALUE rb_str_length(VALUE);
6838long rb_str_offset(VALUE str, long pos);
6839__attribute__((__pure__))
6840size_t rb_str_capacity(VALUE str);
6841VALUE rb_str_ellipsize(VALUE str, long len);
6842VALUE rb_str_scrub(VALUE str, VALUE repl);
6843VALUE rb_str_succ(VALUE orig);
6844__attribute__((__nonnull__ ()))
6846rbimpl_strlen(const char *str)
6848 return ((long)strlen(str));
6850__attribute__((__nonnull__ ()))
6852rbimpl_str_new_cstr(const char *str)
6854 long len = rbimpl_strlen(str);
6855 return rb_str_new_static(str, len);
6857__attribute__((__deprecated__ ("taintedness turned out to be a wrong idea.")))
6859rbimpl_tainted_str_new_cstr(const char *str)
6861 long len = rbimpl_strlen(str);
6862 return rb_tainted_str_new(str, len);
6864__attribute__((__nonnull__ ()))
6866rbimpl_usascii_str_new_cstr(const char *str)
6868 long len = rbimpl_strlen(str);
6869 return rb_usascii_str_new_static(str, len);
6871__attribute__((__nonnull__ ()))
6873rbimpl_utf8_str_new_cstr(const char *str)
6875 long len = rbimpl_strlen(str);
6876 return rb_utf8_str_new_static(str, len);
6878__attribute__((__nonnull__ ()))
6880rbimpl_external_str_new_cstr(const char *str)
6882 long len = rbimpl_strlen(str);
6883 return rb_external_str_new(str, len);
6885__attribute__((__nonnull__ ()))
6887rbimpl_locale_str_new_cstr(const char *str)
6889 long len = rbimpl_strlen(str);
6890 return rb_locale_str_new(str, len);
6892__attribute__((__nonnull__ ()))
6894rbimpl_str_buf_new_cstr(const char *str)
6896 long len = rbimpl_strlen(str);
6897 VALUE buf = rb_str_buf_new(len);
6898 return rb_str_buf_cat(buf, str, len);
6900__attribute__((__nonnull__ ()))
6902rbimpl_str_cat_cstr(VALUE buf, const char *str)
6904 long len = rbimpl_strlen(str);
6905 return rb_str_cat(buf, str, len);
6907__attribute__((__nonnull__ ()))
6909rbimpl_exc_new_cstr(VALUE exc, const char *str)
6911 long len = rbimpl_strlen(str);
6912 return rb_exc_new(exc, str, len);
6918VALUE rb_struct_new(VALUE klass, ...);
6919VALUE rb_struct_define(const char *name, ...);
6920__attribute__((__nonnull__ (2)))
6921VALUE rb_struct_define_under(VALUE space, const char *name, ...);
6922VALUE rb_struct_alloc(VALUE klass, VALUE values);
6923VALUE rb_struct_initialize(VALUE self, VALUE values);
6924VALUE rb_struct_getmember(VALUE self, ID key);
6925VALUE rb_struct_s_members(VALUE klass);
6926VALUE rb_struct_members(VALUE self);
6927VALUE rb_struct_alloc_noinit(VALUE klass);
6928VALUE rb_struct_define_without_accessor(const char *name, VALUE super, rb_alloc_func_t func, ...);
6929__attribute__((__nonnull__ (2)))
6930VALUE rb_struct_define_without_accessor_under(VALUE outer, const char *class_name, VALUE super, rb_alloc_func_t alloc, ...);
6936void rb_thread_schedule(void);
6937int rb_thread_wait_fd(int fd);
6938int rb_thread_fd_writable(int fd);
6939void rb_thread_fd_close(int fd);
6940int rb_thread_alone(void);
6941void rb_thread_sleep(int sec);
6942void rb_thread_sleep_forever(void);
6943void rb_thread_sleep_deadly(void);
6944VALUE rb_thread_stop(void);
6945VALUE rb_thread_wakeup(VALUE thread);
6946VALUE rb_thread_wakeup_alive(VALUE thread);
6947VALUE rb_thread_run(VALUE thread);
6948VALUE rb_thread_kill(VALUE thread);
6949__attribute__((__nonnull__ (1)))
6950VALUE rb_thread_create(VALUE (*f)(void *g), void *g);
6951void rb_thread_wait_for(struct timeval time);
6952VALUE rb_thread_current(void);
6953VALUE rb_thread_main(void);
6954VALUE rb_thread_local_aref(VALUE thread, ID key);
6955VALUE rb_thread_local_aset(VALUE thread, ID key, VALUE val);
6956void rb_thread_atfork(void);
6957void rb_thread_atfork_before_exec(void);
6958VALUE rb_exec_recursive(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE h);
6959VALUE rb_exec_recursive_paired(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE p, VALUE h);
6960VALUE rb_exec_recursive_outer(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE h);
6961VALUE rb_exec_recursive_paired_outer(VALUE (*f)(VALUE g, VALUE h, int r), VALUE g, VALUE p, VALUE h);
6962typedef void rb_unblock_function_t(void *);
6963typedef VALUE rb_blocking_function_t(void *);
6964void rb_thread_check_ints(void);
6965int rb_thread_interrupted(VALUE thval);
6966VALUE rb_mutex_new(void);
6967VALUE rb_mutex_locked_p(VALUE mutex);
6968VALUE rb_mutex_trylock(VALUE mutex);
6969VALUE rb_mutex_lock(VALUE mutex);
6970VALUE rb_mutex_unlock(VALUE mutex);
6971VALUE rb_mutex_sleep(VALUE self, VALUE timeout);
6972VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg);
6979__attribute__((__nonnull__ ()))
6980void rb_timespec_now(struct timespec *ts);
6981VALUE rb_time_new(time_t sec, long usec);
6982VALUE rb_time_nano_new(time_t sec, long nsec);
6983__attribute__((__nonnull__ ()))
6984VALUE rb_time_timespec_new(const struct timespec *ts, int offset);
6985VALUE rb_time_num_new(VALUE timev, VALUE off);
6986struct timeval rb_time_interval(VALUE num);
6987struct timeval rb_time_timeval(VALUE time);
6988struct timespec rb_time_timespec(VALUE time);
6989struct timespec rb_time_timespec_interval(VALUE num);
6990VALUE rb_time_utc_offset(VALUE time);
6995VALUE rb_mod_name(VALUE mod);
6996VALUE rb_class_path(VALUE mod);
6997VALUE rb_class_path_cached(VALUE mod);
6998__attribute__((__nonnull__ ()))
6999void rb_set_class_path(VALUE klass, VALUE space, const char *name);
7000void rb_set_class_path_string(VALUE klass, VALUE space, VALUE name);
7001VALUE rb_path_to_class(VALUE path);
7002__attribute__((__nonnull__ ()))
7003VALUE rb_path2class(const char *path);
7004VALUE rb_class_name(VALUE obj);
7005VALUE rb_autoload_load(VALUE space, ID name);
7006VALUE rb_autoload_p(VALUE space, ID name);
7007VALUE rb_f_trace_var(int argc, const VALUE *argv);
7008VALUE rb_f_untrace_var(int argc, const VALUE *argv);
7009VALUE rb_f_global_variables(void);
7010void rb_alias_variable(ID dst, ID src);
7011void rb_free_generic_ivar(VALUE obj);
7012VALUE rb_ivar_get(VALUE obj, ID name);
7013VALUE rb_ivar_set(VALUE obj, ID name, VALUE val);
7014VALUE rb_ivar_defined(VALUE obj, ID name);
7015void rb_ivar_foreach(VALUE obj, int (*func)(ID name, VALUE val, st_data_t arg), st_data_t arg);
7016st_index_t rb_ivar_count(VALUE obj);
7017VALUE rb_attr_get(VALUE obj, ID name);
7018VALUE rb_obj_instance_variables(VALUE obj);
7019VALUE rb_obj_remove_instance_variable(VALUE obj, VALUE name);
7020void *rb_mod_const_at(VALUE, void*);
7021void *rb_mod_const_of(VALUE, void*);
7022VALUE rb_const_list(void*);
7023VALUE rb_mod_constants(int argc, const VALUE *argv, VALUE recv);
7024VALUE rb_mod_remove_const(VALUE space, VALUE name);
7025int rb_const_defined(VALUE space, ID name);
7026int rb_const_defined_at(VALUE space, ID name);
7027int rb_const_defined_from(VALUE space, ID name);
7028VALUE rb_const_get(VALUE space, ID name);
7029VALUE rb_const_get_at(VALUE space, ID name);
7030VALUE rb_const_get_from(VALUE space, ID name);
7031void rb_const_set(VALUE space, ID name, VALUE val);
7032VALUE rb_const_remove(VALUE space, ID name);
7033VALUE rb_cvar_defined(VALUE klass, ID name);
7034void rb_cvar_set(VALUE klass, ID name, VALUE val);
7035VALUE rb_cvar_get(VALUE klass, ID name);
7036__attribute__((__nonnull__ ()))
7037VALUE rb_cvar_find(VALUE klass, ID name, VALUE *front);
7038__attribute__((__nonnull__ ()))
7039void rb_cv_set(VALUE klass, const char *name, VALUE val);
7040__attribute__((__nonnull__ ()))
7041VALUE rb_cv_get(VALUE klass, const char *name);
7042__attribute__((__nonnull__ ()))
7043void rb_define_class_variable(VALUE, const char*, VALUE);
7044VALUE rb_mod_class_variables(int argc, const VALUE *argv, VALUE recv);
7045VALUE rb_mod_remove_cvar(VALUE mod, VALUE name);
7048int ruby_native_thread_p(void);
7049__attribute__((__nonnull__ (3)))
7050__attribute__((__format__(__printf__, 3, 4)))
7051int ruby_snprintf(char *str, size_t n, char const *fmt, ...);
7052__attribute__((__nonnull__ (3)))
7053__attribute__((__format__(__printf__, 3, 0)))
7054int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
7058typedef __sig_atomic_t sig_atomic_t;
7064typedef union sigval __sigval_t;
7073 int _pad[((128 / sizeof (int)) - 4)];
7083 __sigval_t si_sigval;
7089 __sigval_t si_sigval;
7103 short int si_addr_lsb;
7211typedef __sigval_t sigval_t;
7212typedef struct sigevent
7214 __sigval_t sigev_value;
7219 int _pad[((64 / sizeof (int)) - 4)];
7223 void (*_function) (__sigval_t);
7224 pthread_attr_t *_attribute;
7235typedef void (*__sighandler_t) (int);
7236extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
7237 __attribute__ ((__nothrow__ , __leaf__));
7238extern __sighandler_t sysv_signal (int __sig, __sighandler_t __handler)
7239 __attribute__ ((__nothrow__ , __leaf__));
7240extern __sighandler_t signal (int __sig, __sighandler_t __handler)
7241 __attribute__ ((__nothrow__ , __leaf__));
7242extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__ , __leaf__));
7243extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__ , __leaf__));
7244extern int raise (int __sig) __attribute__ ((__nothrow__ , __leaf__));
7245extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
7246 __attribute__ ((__nothrow__ , __leaf__));
7247extern int gsignal (int __sig) __attribute__ ((__nothrow__ , __leaf__));
7248extern void psignal (int __sig, const char *__s);
7249extern void psiginfo (const siginfo_t *__pinfo, const char *__s);
7250extern int sigpause (int __sig) __asm__ ("__xpg_sigpause")
7251 __attribute__ ((__deprecated__ ("Use the sigsuspend function instead")));
7252extern int sigblock (int __mask) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
7253extern int sigsetmask (int __mask) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
7254extern int siggetmask (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
7255typedef __sighandler_t sighandler_t;
7256typedef __sighandler_t sig_t;
7257extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
7258extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
7259extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
7260extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
7261extern int sigismember (const sigset_t *__set, int __signo)
7262 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
7263extern int sigisemptyset (const sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
7264extern int sigandset (sigset_t *__set, const sigset_t *__left,
7265 const sigset_t *__right) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3)));
7266extern int sigorset (sigset_t *__set, const sigset_t *__left,
7267 const sigset_t *__right) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3)));
7272 __sighandler_t sa_handler;
7273 void (*sa_sigaction) (int, siginfo_t *, void *);
7275 __sigaction_handler;
7278 void (*sa_restorer) (void);
7280extern int sigprocmask (int __how, const sigset_t *__restrict __set,
7281 sigset_t *__restrict __oset) __attribute__ ((__nothrow__ , __leaf__));
7282extern int sigsuspend (const sigset_t *__set) __attribute__ ((__nonnull__ (1)));
7283extern int sigaction (int __sig, const struct sigaction *__restrict __act,
7284 struct sigaction *__restrict __oact) __attribute__ ((__nothrow__ , __leaf__));
7285extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
7286extern int sigwait (const sigset_t *__restrict __set, int *__restrict __sig)
7287 __attribute__ ((__nonnull__ (1, 2)));
7288extern int sigwaitinfo (const sigset_t *__restrict __set,
7289 siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1)));
7290extern int sigtimedwait (const sigset_t *__restrict __set,
7291 siginfo_t *__restrict __info,
7292 const struct timespec *__restrict __timeout)
7293 __attribute__ ((__nonnull__ (1)));
7294extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val)
7295 __attribute__ ((__nothrow__ , __leaf__));
7299 __uint32_t extended_size;
7300 __uint64_t xstate_bv;
7301 __uint32_t xstate_size;
7302 __uint32_t __glibc_reserved1[7];
7306 unsigned short significand[4];
7307 unsigned short exponent;
7311 unsigned short significand[4];
7312 unsigned short exponent;
7313 unsigned short __glibc_reserved1[3];
7317 __uint32_t element[4];
7328 __uint32_t mxcr_mask;
7329 struct _fpxreg _st[8];
7330 struct _xmmreg _xmm[16];
7331 __uint32_t __glibc_reserved1[24];
7356 unsigned short __pad0;
7363 struct _fpstate * fpstate;
7364 __uint64_t __fpstate_word;
7366 __uint64_t __reserved1 [8];
7370 __uint64_t xstate_bv;
7371 __uint64_t __glibc_reserved1[2];
7372 __uint64_t __glibc_reserved2[5];
7376 __uint32_t ymmh_space[64];
7380 struct _fpstate fpstate;
7381 struct _xsave_hdr xstate_hdr;
7382 struct _ymmh_state ymmh;
7384extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__ , __leaf__));
7391__extension__ typedef long long int greg_t;
7392typedef greg_t gregset_t[23];
7421 unsigned short int significand[4];
7422 unsigned short int exponent;
7423 unsigned short int __glibc_reserved1[3];
7427 __uint32_t element[4];
7438 __uint32_t mxcr_mask;
7439 struct _libc_fpxreg _st[8];
7440 struct _libc_xmmreg _xmm[16];
7441 __uint32_t __glibc_reserved1[24];
7443typedef struct _libc_fpstate *fpregset_t;
7448 __extension__ unsigned long long __reserved1 [8];
7450typedef struct ucontext_t
7452 unsigned long int uc_flags;
7453 struct ucontext_t *uc_link;
7455 mcontext_t uc_mcontext;
7456 sigset_t uc_sigmask;
7457 struct _libc_fpstate __fpregs_mem;
7458 __extension__ unsigned long long int __ssp[4];
7460extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__ , __leaf__))
7461 __attribute__ ((__deprecated__ ("Use sigaction with SA_RESTART instead")));
7467extern int sigaltstack (const stack_t *__restrict __ss,
7468 stack_t *__restrict __oss) __attribute__ ((__nothrow__ , __leaf__));
7474extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
7475 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__deprecated__));
7476extern int sighold (int __sig) __attribute__ ((__nothrow__ , __leaf__))
7477 __attribute__ ((__deprecated__ ("Use the sigprocmask function instead")));
7478extern int sigrelse (int __sig) __attribute__ ((__nothrow__ , __leaf__))
7479 __attribute__ ((__deprecated__ ("Use the sigprocmask function instead")));
7480extern int sigignore (int __sig) __attribute__ ((__nothrow__ , __leaf__))
7481 __attribute__ ((__deprecated__ ("Use the signal function instead")));
7482extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __attribute__ ((__nothrow__ , __leaf__))
7483 __attribute__ ((__deprecated__ ("Use the signal and sigprocmask functions instead")));
7484extern int pthread_sigmask (int __how,
7485 const __sigset_t *__restrict __newmask,
7486 __sigset_t *__restrict __oldmask)__attribute__ ((__nothrow__ , __leaf__));
7487extern int pthread_kill (pthread_t __threadid, int __signo) __attribute__ ((__nothrow__ , __leaf__));
7488extern int pthread_sigqueue (pthread_t __threadid, int __signo,
7489 const union sigval __value) __attribute__ ((__nothrow__ , __leaf__));
7490extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__ , __leaf__));
7491extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__ , __leaf__));
7492extern int tgkill (__pid_t __tgid, __pid_t __tid, int __signal);
7495typedef long int __jmp_buf[8];
7499 int __mask_was_saved;
7500 __sigset_t __saved_mask;
7502typedef struct __jmp_buf_tag jmp_buf[1];
7503extern int setjmp (jmp_buf __env) __attribute__ ((__nothrow__));
7504extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __attribute__ ((__nothrow__));
7505extern int _setjmp (struct __jmp_buf_tag __env[1]) __attribute__ ((__nothrow__));
7506extern void longjmp (struct __jmp_buf_tag __env[1], int __val)
7507 __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
7508extern void _longjmp (struct __jmp_buf_tag __env[1], int __val)
7509 __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
7510typedef struct __jmp_buf_tag sigjmp_buf[1];
7511extern void siglongjmp (sigjmp_buf __env, int __val)
7512 __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
7513extern void longjmp (struct __jmp_buf_tag __env[1], int __val) __asm__ ("" "__longjmp_chk") __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
7514extern void _longjmp (struct __jmp_buf_tag __env[1], int __val) __asm__ ("" "__longjmp_chk") __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
7515extern void siglongjmp (struct __jmp_buf_tag __env[1], int __val) __asm__ ("" "__longjmp_chk") __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
7517static inline char *container_of_or_null_(void *member_ptr, size_t offset)
7519 return member_ptr ? (char *)member_ptr - offset : ((void *)0);
7523 struct list_node *next, *prev;
7529static inline void list_head_init(struct list_head *h)
7531 h->n.next = h->n.prev = &h->n;
7533static inline void list_node_init(struct list_node *n)
7535 n->next = n->prev = n;
7537static inline void list_add_after_(struct list_head *h,
7538 struct list_node *p,
7539 struct list_node *n,
7540 const char *abortstr)
7546 (void)((void)abortstr, h);
7548static inline void list_add_(struct list_head *h,
7549 struct list_node *n,
7550 const char *abortstr)
7552 list_add_after_(h, &h->n, n, abortstr);
7554static inline void list_add_before_(struct list_head *h,
7555 struct list_node *p,
7556 struct list_node *n,
7557 const char *abortstr)
7563 (void)((void)abortstr, h);
7565static inline void list_add_tail_(struct list_head *h,
7566 struct list_node *n,
7567 const char *abortstr)
7569 list_add_before_(h, &h->n, n, abortstr);
7571static inline int list_empty_(const struct list_head *h, const char* abortstr)
7573 (void)((void)abortstr, h);
7574 return h->n.next == &h->n;
7576static inline _Bool list_empty_nocheck(const struct list_head *h)
7578 return h->n.next == &h->n;
7580static inline void list_del_(struct list_node *n, const char* abortstr)
7582 (void)((void)abortstr, n);
7583 n->next->prev = n->prev;
7584 n->prev->next = n->next;
7586static inline void list_del_init_(struct list_node *n, const char *abortstr)
7588 list_del_(n, abortstr);
7591static inline void list_del_from(struct list_head *h, struct list_node *n)
7594 list_del_(n, "./ccan/list/list.h" ":" "329");
7596static inline void list_swap_(struct list_node *o,
7597 struct list_node *n,
7598 const char* abortstr)
7600 (void)((void)abortstr, o);
7605static inline const void *list_top_(const struct list_head *h, size_t off)
7607 if (list_empty_(h, "./ccan/list/list.h" ":" "399"))
7609 return (const char *)h->n.next - off;
7611static inline const void *list_pop_(const struct list_head *h, size_t off)
7613 struct list_node *n;
7614 if (list_empty_(h, "./ccan/list/list.h" ":" "425"))
7617 list_del_(n, "./ccan/list/list.h" ":" "428");
7618 return (const char *)n - off;
7620static inline const void *list_tail_(const struct list_head *h, size_t off)
7622 if (list_empty_(h, "./ccan/list/list.h" ":" "451"))
7624 return (const char *)h->n.prev - off;
7626static inline void list_append_list_(struct list_head *to,
7627 struct list_head *from,
7628 const char *abortstr)
7630 struct list_node *from_tail = ((void)abortstr, from)->n.prev;
7631 struct list_node *to_tail = ((void)abortstr, to)->n.prev;
7632 to->n.prev = from_tail;
7633 from_tail->next = &to->n;
7634 to_tail->next = &from->n;
7635 from->n.prev = to_tail;
7636 list_del_(&from->n, "./ccan/list/list.h" ":" "600");
7637 list_head_init(from);
7639static inline void list_prepend_list_(struct list_head *to,
7640 struct list_head *from,
7641 const char *abortstr)
7643 struct list_node *from_tail = ((void)abortstr, from)->n.prev;
7644 struct list_node *to_head = ((void)abortstr, to)->n.next;
7645 to->n.next = &from->n;
7646 from->n.prev = &to->n;
7647 to_head->prev = from_tail;
7648 from_tail->next = to_head;
7649 list_del_(&from->n, "./ccan/list/list.h" ":" "632");
7650 list_head_init(from);
7652static inline void *list_node_to_off_(struct list_node *node, size_t off)
7654 return (void *)((char *)node - off);
7656static inline struct list_node *list_node_from_off_(void *ptr, size_t off)
7658 return (struct list_node *)((char *)ptr + off);
7660static inline void *list_entry_or_null(const struct list_head *h,
7661 const struct list_node *n,
7666 return (char *)n - off;
7669 RUBY_ID_STATIC_SYM = 0x01,
7670 RUBY_ID_LOCAL = 0x00,
7671 RUBY_ID_INSTANCE = (0x01<<1),
7672 RUBY_ID_GLOBAL = (0x03<<1),
7673 RUBY_ID_ATTRSET = (0x04<<1),
7674 RUBY_ID_CONST = (0x05<<1),
7675 RUBY_ID_CLASS = (0x06<<1),
7676 RUBY_ID_JUNK = (0x07<<1),
7677 RUBY_ID_INTERNAL = RUBY_ID_JUNK,
7678 RUBY_ID_SCOPE_SHIFT = 4,
7679 RUBY_ID_SCOPE_MASK = (~(~0U<<(RUBY_ID_SCOPE_SHIFT-1))<<1)
7681enum ruby_method_ids {
7714 tPRESERVED_ID_BEGIN = 150,
7720 idRespond_to_missing,
7723 id_core_set_method_alias,
7724 id_core_set_variable_alias,
7725 id_core_undef_method,
7726 id_core_define_method,
7727 id_core_define_singleton_method,
7728 id_core_set_postexe,
7729 id_core_hash_merge_ptr,
7730 id_core_hash_merge_kwd,
7733 id_debug_created_info,
7735 tTOKEN_LOCAL_BEGIN = tPRESERVED_ID_END-1,
7745 tSingleton_method_added,
7747 tSingleton_method_removed,
7749 tSingleton_method_undefined,
7803 tTOKEN_INSTANCE_BEGIN = tTOKEN_LOCAL_END-1,
7804 tTOKEN_INSTANCE_END,
7805 tTOKEN_GLOBAL_BEGIN = tTOKEN_INSTANCE_END-1,
7810 tTOKEN_CONST_BEGIN = tTOKEN_GLOBAL_END-1,
7812 tTOKEN_CLASS_BEGIN = tTOKEN_CONST_END-1,
7814 tTOKEN_ATTRSET_BEGIN = tTOKEN_CLASS_END-1,
7816 tNEXT_ID = tTOKEN_ATTRSET_END,
7817 idMax = ((tMax<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7818 idMin = ((tMin<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7819 idFreeze = ((tFreeze<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7820 idInspect = ((tInspect<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7821 idIntern = ((tIntern<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7822 idObject_id = ((tObject_id<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7823 idConst_missing = ((tConst_missing<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7824 idMethodMissing = ((tMethodMissing<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7825 idMethod_added = ((tMethod_added<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7826 idSingleton_method_added = ((tSingleton_method_added<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7827 idMethod_removed = ((tMethod_removed<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7828 idSingleton_method_removed = ((tSingleton_method_removed<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7829 idMethod_undefined = ((tMethod_undefined<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7830 idSingleton_method_undefined = ((tSingleton_method_undefined<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7831 idLength = ((tLength<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7832 idSize = ((tSize<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7833 idGets = ((tGets<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7834 idSucc = ((tSucc<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7835 idEach = ((tEach<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7836 idProc = ((tProc<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7837 idLambda = ((tLambda<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7838 idSend = ((tSend<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7839 id__send__ = ((t__send__<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7840 id__attached__ = ((t__attached__<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7841 id__recursive_key__ = ((t__recursive_key__<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7842 idInitialize = ((tInitialize<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7843 idInitialize_copy = ((tInitialize_copy<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7844 idInitialize_clone = ((tInitialize_clone<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7845 idInitialize_dup = ((tInitialize_dup<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7846 idTo_int = ((tTo_int<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7847 idTo_ary = ((tTo_ary<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7848 idTo_str = ((tTo_str<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7849 idTo_sym = ((tTo_sym<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7850 idTo_hash = ((tTo_hash<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7851 idTo_proc = ((tTo_proc<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7852 idTo_io = ((tTo_io<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7853 idTo_a = ((tTo_a<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7854 idTo_s = ((tTo_s<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7855 idTo_i = ((tTo_i<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7856 idTo_f = ((tTo_f<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7857 idTo_r = ((tTo_r<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7858 idBt = ((tBt<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7859 idBt_locations = ((tBt_locations<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7860 idCall = ((tCall<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7861 idMesg = ((tMesg<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7862 idException = ((tException<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7863 idLocals = ((tLocals<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7864 idNOT = ((tNOT<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7865 idAND = ((tAND<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7866 idOR = ((tOR<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7867 idDiv = ((tDiv<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7868 idDivmod = ((tDivmod<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7869 idFdiv = ((tFdiv<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7870 idQuo = ((tQuo<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7871 idName = ((tName<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7872 idNil = ((tNil<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7873 idUScore = ((tUScore<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7874 idNUMPARAM_1 = ((tNUMPARAM_1<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7875 idNUMPARAM_2 = ((tNUMPARAM_2<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7876 idNUMPARAM_3 = ((tNUMPARAM_3<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7877 idNUMPARAM_4 = ((tNUMPARAM_4<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7878 idNUMPARAM_5 = ((tNUMPARAM_5<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7879 idNUMPARAM_6 = ((tNUMPARAM_6<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7880 idNUMPARAM_7 = ((tNUMPARAM_7<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7881 idNUMPARAM_8 = ((tNUMPARAM_8<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7882 idNUMPARAM_9 = ((tNUMPARAM_9<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
7883 idLASTLINE = ((tLASTLINE<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_GLOBAL|RUBY_ID_STATIC_SYM),
7884 idBACKREF = ((tBACKREF<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_GLOBAL|RUBY_ID_STATIC_SYM),
7885 idERROR_INFO = ((tERROR_INFO<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_GLOBAL|RUBY_ID_STATIC_SYM),
7886 tLAST_OP_ID = tPRESERVED_ID_END-1,
7887 idLAST_OP_ID = tLAST_OP_ID >> RUBY_ID_SCOPE_SHIFT
7889void rb_obj_info_dump(VALUE obj);
7890void rb_obj_info_dump_loc(VALUE obj, const char *file, int line, const char *func);
7893void ruby_debug_breakpoint(void);
7894__attribute__((__format__(__printf__, (1), (2)))) void ruby_debug_printf(const char*, ...);
7897VALUE rb_ary_last(int, const VALUE *, VALUE);
7898void rb_ary_set_len(VALUE, long);
7899void rb_ary_delete_same(VALUE, VALUE);
7900VALUE rb_ary_tmp_new_fill(long capa);
7901VALUE rb_ary_at(VALUE, VALUE);
7902size_t rb_ary_memsize(VALUE);
7903VALUE rb_to_array_type(VALUE obj);
7904VALUE rb_to_array(VALUE obj);
7905void rb_ary_cancel_sharing(VALUE ary);
7906static inline VALUE rb_ary_entry_internal(VALUE ary, long offset);
7907static inline _Bool ARY_PTR_USING_P(VALUE ary);
7908static inline void RARY_TRANSIENT_SET(VALUE ary);
7909static inline void RARY_TRANSIENT_UNSET(VALUE ary);
7912VALUE rb_ary_tmp_new_from_values(VALUE, long, const VALUE *);
7913VALUE rb_check_to_array(VALUE ary);
7914VALUE rb_ary_behead(VALUE, long);
7915VALUE rb_ary_aref1(VALUE ary, VALUE i);
7916struct rb_execution_context_struct;
7917VALUE rb_ec_ary_new_from_values(struct rb_execution_context_struct *ec, long n, const VALUE *elts);
7921rb_ary_entry_internal(VALUE ary, long offset)
7923 long len = rb_array_len(ary);
7924 const VALUE *ptr = rb_array_const_ptr_transient(ary);
7925 if (len == 0) return ((VALUE)RUBY_Qnil);
7928 if (offset < 0) return ((VALUE)RUBY_Qnil);
7930 else if (len <= offset) {
7931 return ((VALUE)RUBY_Qnil);
7936ARY_PTR_USING_P(VALUE ary)
7938 return RB_FL_TEST_RAW(ary, ((VALUE)RUBY_FL_USER14));
7941RARY_TRANSIENT_SET(VALUE ary)
7943 RB_FL_SET_RAW(ary, RARRAY_TRANSIENT_FLAG);
7946RARY_TRANSIENT_UNSET(VALUE ary)
7948 RB_FL_UNSET_RAW(ary, RARRAY_TRANSIENT_FLAG);
7950__attribute__((__pure__))
7951__attribute__((__artificial__))
7953RARRAY_AREF(VALUE ary, long i)
7956 return rb_array_const_ptr_transient(ary)[i];
7958typedef unsigned long long rb_serial_t;
7959struct rb_callable_method_entry_struct;
7960struct rb_method_definition_struct;
7961struct rb_execution_context_struct;
7962struct rb_control_frame_struct;
7964enum method_missing_reason {
7965 MISSING_NOENTRY = 0x00,
7966 MISSING_PRIVATE = 0x01,
7967 MISSING_PROTECTED = 0x02,
7968 MISSING_FCALL = 0x04,
7969 MISSING_VCALL = 0x08,
7970 MISSING_SUPER = 0x10,
7971 MISSING_MISSING = 0x20,
7974rb_serial_t rb_next_class_serial(void);
7975VALUE rb_obj_is_thread(VALUE obj);
7976void rb_vm_mark(void *ptr);
7977void rb_vm_each_stack_value(void *ptr, void (*cb)(VALUE, void*), void *ctx);
7978__attribute__((__pure__)) VALUE rb_vm_top_self(void);
7979void rb_vm_inc_const_missing_count(void);
7980const void **rb_vm_get_insns_address_table(void);
7981VALUE rb_source_location(int *pline);
7982const char *rb_source_location_cstr(int *pline);
7983static void rb_vm_pop_cfunc_frame(void);
7984int rb_vm_add_root_module(VALUE module);
7985void rb_vm_check_redefinition_by_prepend(VALUE klass);
7986int rb_vm_check_optimizable_mid(VALUE mid);
7987VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements);
7988static VALUE ruby_vm_special_exception_copy(VALUE);
7989__attribute__((__pure__)) st_table *rb_vm_fstring_table(void);
7992VALUE rb_vm_exec(struct rb_execution_context_struct *, _Bool);
7995VALUE rb_current_realfilepath(void);
7996VALUE rb_check_block_call(VALUE, ID, int, const VALUE *, rb_block_call_func_t, VALUE);
7997typedef void rb_check_funcall_hook(int, VALUE, ID, int, const VALUE *, VALUE);
7998VALUE rb_check_funcall_with_hook(VALUE recv, ID mid, int argc, const VALUE *argv,
7999 rb_check_funcall_hook *hook, VALUE arg);
8000VALUE rb_check_funcall_with_hook_kw(VALUE recv, ID mid, int argc, const VALUE *argv,
8001 rb_check_funcall_hook *hook, VALUE arg, int kw_splat);
8002const char *rb_type_str(enum ruby_value_type type);
8003VALUE rb_check_funcall_default(VALUE, ID, int, const VALUE *, VALUE);
8004VALUE rb_check_funcall_basic_kw(VALUE, ID, VALUE, int, const VALUE*, int);
8005VALUE rb_yield_1(VALUE val);
8006VALUE rb_yield_force_blockarg(VALUE values);
8007VALUE rb_lambda_call(VALUE obj, ID mid, int argc, const VALUE *argv,
8008 rb_block_call_func_t bl_proc, int min_argc, int max_argc,
8010void rb_check_stack_overflow(void);
8011VALUE rb_equal_opt(VALUE obj1, VALUE obj2);
8012VALUE rb_eql_opt(VALUE obj1, VALUE obj2);
8013struct rb_iseq_struct;
8016const struct rb_callcache *rb_vm_search_method_slowpath(const struct rb_callinfo *ci, VALUE klass);
8019struct rb_execution_context_struct;
8022int rb_ec_obj_respond_to(struct rb_execution_context_struct *ec, VALUE obj, ID id, int priv);
8025void rb_print_backtrace(void);
8026VALUE rb_vm_thread_backtrace(int argc, const VALUE *argv, VALUE thval);
8027VALUE rb_vm_thread_backtrace_locations(int argc, const VALUE *argv, VALUE thval);
8028VALUE rb_vm_backtrace(int argc, const VALUE * argv, struct rb_execution_context_struct * ec);
8029VALUE rb_vm_backtrace_locations(int argc, const VALUE * argv, struct rb_execution_context_struct * ec);
8030VALUE rb_make_backtrace(void);
8031void rb_backtrace_print_as_bugreport(void);
8032int rb_backtrace_p(VALUE obj);
8033VALUE rb_backtrace_to_str_ary(VALUE obj);
8034VALUE rb_backtrace_to_location_ary(VALUE obj);
8035void rb_backtrace_each(VALUE (*iter)(VALUE recv, VALUE str), VALUE output);
8036int rb_frame_info_p(VALUE obj);
8037int rb_get_node_id_from_frame_info(VALUE obj);
8038const struct rb_iseq_struct *rb_get_iseq_from_frame_info(VALUE obj);
8041VALUE rb_ec_backtrace_object(const struct rb_execution_context_struct *ec);
8042void rb_backtrace_use_iseq_first_lineno_for_last_location(VALUE self);
8045struct rb_execution_context_struct;
8047typedef struct ractor_newobj_size_pool_cache {
8048 struct RVALUE *freelist;
8049 struct heap_page *using_page;
8050} rb_ractor_newobj_size_pool_cache_t;
8051typedef struct ractor_newobj_cache {
8052 rb_ractor_newobj_size_pool_cache_t size_pool_caches[1];
8053} rb_ractor_newobj_cache_t;
8054extern VALUE *ruby_initial_gc_stress_ptr;
8055extern int ruby_disable_gc;
8056__attribute__((__malloc__)) void *ruby_mimmalloc(size_t size);
8057void ruby_mimfree(void *ptr);
8058void rb_objspace_set_event_hook(const rb_event_flag_t event);
8059VALUE rb_objspace_gc_enable(struct rb_objspace *);
8060VALUE rb_objspace_gc_disable(struct rb_objspace *);
8061void ruby_gc_set_params(void);
8062void rb_copy_wb_protected_attribute(VALUE dest, VALUE obj);
8063__attribute__((__alloc_align__(1)))
8064__attribute__((__malloc__)) void *rb_aligned_malloc(size_t, size_t) __attribute__((__alloc_size__ (2)));
8065size_t rb_size_mul_or_raise(size_t, size_t, VALUE);
8066size_t rb_size_mul_add_or_raise(size_t, size_t, size_t, VALUE);
8067__attribute__((__malloc__)) void *rb_xmalloc_mul_add(size_t, size_t, size_t);
8068void *rb_xrealloc_mul_add(const void *, size_t, size_t, size_t);
8069__attribute__((__malloc__)) void *rb_xmalloc_mul_add_mul(size_t, size_t, size_t, size_t);
8070__attribute__((__malloc__)) void *rb_xcalloc_mul_add_mul(size_t, size_t, size_t, size_t);
8071static inline void *ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size_t old_size) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2)));
8072static inline void *ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2, 3)));
8073static inline void ruby_sized_xfree_inlined(void *ptr, size_t size);
8074VALUE rb_class_allocate_instance(VALUE klass);
8075void rb_gc_ractor_newobj_cache_clear(rb_ractor_newobj_cache_t *newobj_cache);
8076size_t rb_gc_obj_slot_size(VALUE obj);
8077_Bool rb_gc_size_allocatable_p(size_t size);
8078int rb_objspace_garbage_object_p(VALUE obj);
8081const char *rb_objspace_data_type_name(VALUE obj);
8082VALUE rb_wb_protected_newobj_of(VALUE, VALUE, size_t);
8083VALUE rb_wb_unprotected_newobj_of(VALUE, VALUE, size_t);
8084VALUE rb_ec_wb_protected_newobj_of(struct rb_execution_context_struct *ec, VALUE klass, VALUE flags, size_t);
8085size_t rb_obj_memsize_of(VALUE);
8086void rb_gc_verify_internal_consistency(void);
8087size_t rb_obj_gc_flags(VALUE, ID[], size_t);
8088void rb_gc_mark_values(long n, const VALUE *values);
8089void rb_gc_mark_vm_stack_values(long n, const VALUE *values);
8090void *ruby_sized_xrealloc(void *ptr, size_t new_size, size_t old_size) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2)));
8091void *ruby_sized_xrealloc2(void *ptr, size_t new_count, size_t element_size, size_t old_count) __attribute__((__returns_nonnull__)) __attribute__((__alloc_size__ (2, 3)));
8092void ruby_sized_xfree(void *x, size_t size);
8097int rb_ec_stack_check(struct rb_execution_context_struct *ec);
8098void rb_gc_writebarrier_remember(VALUE obj);
8099const char *rb_obj_info(VALUE obj);
8103ruby_sized_xrealloc_inlined(void *ptr, size_t new_size, size_t old_size)
8105 return ruby_xrealloc(ptr, new_size);
8108ruby_sized_xrealloc2_inlined(void *ptr, size_t new_count, size_t elemsiz, size_t old_count)
8110 return ruby_xrealloc2(ptr, new_count, elemsiz);
8113ruby_sized_xfree_inlined(void *ptr, size_t size)
8121 imemo_throw_data = 3,
8128 imemo_parser_strterm = 10,
8129 imemo_callinfo = 11,
8130 imemo_callcache = 12,
8131 imemo_constcache = 13,
8135 const VALUE cref_or_me;
8136 const VALUE lastline;
8137 const VALUE backref;
8140struct vm_throw_data {
8143 const VALUE throw_obj;
8144 const struct rb_control_frame_struct *catch_frame;
8147struct vm_ifunc_argc {
8153 rb_block_call_func_t func;
8155 struct vm_ifunc_argc argc;
8157struct rb_imemo_tmpbuf_struct {
8161 struct rb_imemo_tmpbuf_struct *next;
8176typedef struct rb_imemo_tmpbuf_struct rb_imemo_tmpbuf_t;
8177VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0);
8178rb_imemo_tmpbuf_t *rb_imemo_tmpbuf_parser_heap(void *buf, rb_imemo_tmpbuf_t *old_heap, size_t cnt);
8179struct vm_ifunc *rb_vm_ifunc_new(rb_block_call_func_t func, const void *data, int min_argc, int max_argc);
8180void rb_strterm_mark(VALUE obj);
8181static inline enum imemo_type imemo_type(VALUE imemo);
8182static inline int imemo_type_p(VALUE imemo, enum imemo_type imemo_type);
8183static inline _Bool imemo_throw_data_p(VALUE imemo);
8184static inline struct vm_ifunc *rb_vm_ifunc_proc_new(rb_block_call_func_t func, const void *data);
8185static inline VALUE rb_imemo_tmpbuf_auto_free_pointer(void);
8186static inline void *RB_IMEMO_TMPBUF_PTR(VALUE v);
8187static inline void *rb_imemo_tmpbuf_set_ptr(VALUE v, void *ptr);
8188static inline VALUE rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(VALUE str);
8189static inline void MEMO_V1_SET(struct MEMO *m, VALUE v);
8190static inline void MEMO_V2_SET(struct MEMO *m, VALUE v);
8193VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0);
8194const char *rb_imemo_name(enum imemo_type type);
8197static inline enum imemo_type
8198imemo_type(VALUE imemo)
8200 return (((struct RBasic *)(imemo))->flags >> ((VALUE)RUBY_FL_USHIFT)) & 0x0f;
8203imemo_type_p(VALUE imemo, enum imemo_type imemo_type)
8205 if ((__builtin_expect(!!(!RB_SPECIAL_CONST_P(imemo)), 1))) {
8206 const VALUE mask = (0x0f << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_MASK;
8207 const VALUE expected_type = (imemo_type << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_IMEMO;
8208 return expected_type == (((struct RBasic *)(imemo))->flags & mask);
8215imemo_throw_data_p(VALUE imemo)
8217 return RB_TYPE_P(imemo, RUBY_T_IMEMO);
8219static inline struct vm_ifunc *
8220rb_vm_ifunc_proc_new(rb_block_call_func_t func, const void *data)
8222 return rb_vm_ifunc_new(func, data, 0, (-1));
8225rb_imemo_tmpbuf_auto_free_pointer(void)
8227 return rb_imemo_new(imemo_tmpbuf, 0, 0, 0, 0);
8230RB_IMEMO_TMPBUF_PTR(VALUE v)
8232 const struct rb_imemo_tmpbuf_struct *p = (const void *)v;
8236rb_imemo_tmpbuf_set_ptr(VALUE v, void *ptr)
8238 return ((rb_imemo_tmpbuf_t *)v)->ptr = ptr;
8241rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(VALUE str)
8245 rb_imemo_tmpbuf_t *tmpbuf;
8248 rb_string_value(&(str));
8249 imemo = rb_imemo_tmpbuf_auto_free_pointer();
8250 tmpbuf = (rb_imemo_tmpbuf_t *)imemo;
8251 len = RSTRING_LEN(str);
8252 src = RSTRING_PTR(str);
8253 dst = ruby_xmalloc(len);
8254 ruby_nonempty_memcpy(dst, src, len);
8259MEMO_V1_SET(struct MEMO *m, VALUE v)
8261 rb_obj_write((VALUE)(m), __extension__({
8263 ; __typeof__((VALUE *)(&m->v1)) unaligned_member_access_result = ((VALUE *)(&m->v1));
8264 ; unaligned_member_access_result; }), (VALUE)(v), "./internal/imemo.h", 234);
8267MEMO_V2_SET(struct MEMO *m, VALUE v)
8269 rb_obj_write((VALUE)(m), __extension__({
8271 ; __typeof__((VALUE *)(&m->v2)) unaligned_member_access_result = ((VALUE *)(&m->v2));
8272 ; unaligned_member_access_result; }), (VALUE)(v), "./internal/imemo.h", 240);
8275 METHOD_VISI_UNDEF = 0x00,
8276 METHOD_VISI_PUBLIC = 0x01,
8277 METHOD_VISI_PRIVATE = 0x02,
8278 METHOD_VISI_PROTECTED = 0x03,
8279 METHOD_VISI_MASK = 0x03
8280} rb_method_visibility_t;
8281typedef struct rb_scope_visi_struct {
8282 rb_method_visibility_t method_visi : 3;
8283 unsigned int module_func : 1;
8284} rb_scope_visibility_t;
8285typedef struct rb_cref_struct {
8288 VALUE klass_or_self;
8289 struct rb_cref_struct * next;
8290 const rb_scope_visibility_t scope_visi;
8292typedef struct rb_method_entry_struct {
8294 VALUE defined_class;
8295 struct rb_method_definition_struct * const def;
8299typedef struct rb_callable_method_entry_struct {
8301 const VALUE defined_class;
8302 struct rb_method_definition_struct * const def;
8305} rb_callable_method_entry_t;
8307METHOD_ENTRY_VISI_SET(rb_method_entry_t *me, rb_method_visibility_t visi)
8310 me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) | (visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0));
8313METHOD_ENTRY_BASIC_SET(rb_method_entry_t *me, unsigned int basic)
8316 me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER6) )) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2));
8319METHOD_ENTRY_FLAGS_SET(rb_method_entry_t *me, rb_method_visibility_t visi, unsigned int basic)
8324 (me->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6))) |
8325 ((visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2)));
8328METHOD_ENTRY_FLAGS_COPY(rb_method_entry_t *dst, const rb_method_entry_t *src)
8331 (dst->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6))) |
8332 (src->flags & (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)));
8335 VM_METHOD_TYPE_ISEQ,
8336 VM_METHOD_TYPE_CFUNC,
8337 VM_METHOD_TYPE_ATTRSET,
8338 VM_METHOD_TYPE_IVAR,
8339 VM_METHOD_TYPE_BMETHOD,
8340 VM_METHOD_TYPE_ZSUPER,
8341 VM_METHOD_TYPE_ALIAS,
8342 VM_METHOD_TYPE_UNDEF,
8343 VM_METHOD_TYPE_NOTIMPLEMENTED,
8344 VM_METHOD_TYPE_OPTIMIZED,
8345 VM_METHOD_TYPE_MISSING,
8346 VM_METHOD_TYPE_REFINED,
8349__extension__ _Static_assert(VM_METHOD_TYPE_REFINED <= (1<<4), "VM_METHOD_TYPE_MINIMUM_BITS" ": " "VM_METHOD_TYPE_REFINED <= (1<<VM_METHOD_TYPE_MINIMUM_BITS)");
8350typedef struct rb_iseq_struct rb_iseq_t;
8351typedef struct rb_method_iseq_struct {
8352 const rb_iseq_t * iseqptr;
8355typedef struct rb_method_cfunc_struct {
8357 VALUE (*invoker)(VALUE recv, int argc, const VALUE *argv, VALUE (*func)());
8360typedef struct rb_method_attr_struct {
8364typedef struct rb_method_alias_struct {
8365 struct rb_method_entry_struct * original_me;
8367typedef struct rb_method_refined_struct {
8368 struct rb_method_entry_struct * orig_me;
8370} rb_method_refined_t;
8371typedef struct rb_method_bmethod_struct {
8373 struct rb_hook_list_struct *hooks;
8374 VALUE defined_ractor;
8375} rb_method_bmethod_t;
8376enum method_optimized_type {
8377 OPTIMIZED_METHOD_TYPE_SEND,
8378 OPTIMIZED_METHOD_TYPE_CALL,
8379 OPTIMIZED_METHOD_TYPE_BLOCK_CALL,
8380 OPTIMIZED_METHOD_TYPE_STRUCT_AREF,
8381 OPTIMIZED_METHOD_TYPE_STRUCT_ASET,
8382 OPTIMIZED_METHOD_TYPE__MAX
8384typedef struct rb_method_optimized {
8385 enum method_optimized_type type;
8387} rb_method_optimized_t;
8388struct rb_method_definition_struct {
8389 rb_method_type_t type : 4;
8390 unsigned int iseq_overload: 1;
8391 int alias_count : 27;
8392 int complemented_count : 28;
8393 unsigned int no_redef_warning: 1;
8395 rb_method_iseq_t iseq;
8396 rb_method_cfunc_t cfunc;
8397 rb_method_attr_t attr;
8398 rb_method_alias_t alias;
8399 rb_method_refined_t refined;
8400 rb_method_bmethod_t bmethod;
8401 rb_method_optimized_t optimized;
8404 uintptr_t method_serial;
8407typedef struct rb_method_definition_struct rb_method_definition_t;
8408__extension__ _Static_assert(__builtin_offsetof (rb_method_definition_t, body)==8, "sizeof_method_def" ": " "offsetof(rb_method_definition_t, body)==8");
8409void rb_add_method(VALUE klass, ID mid, rb_method_type_t type, void *option, rb_method_visibility_t visi);
8410void rb_add_method_cfunc(VALUE klass, ID mid, VALUE (*func)(), int argc, rb_method_visibility_t visi);
8411void rb_add_method_iseq(VALUE klass, ID mid, const rb_iseq_t *iseq, rb_cref_t *cref, rb_method_visibility_t visi);
8412void rb_add_method_optimized(VALUE klass, ID mid, enum method_optimized_type, unsigned int index, rb_method_visibility_t visi);
8413void rb_add_refined_method_entry(VALUE refined_class, ID mid);
8414rb_method_entry_t *rb_method_entry_set(VALUE klass, ID mid, const rb_method_entry_t *, rb_method_visibility_t noex);
8415rb_method_entry_t *rb_method_entry_create(ID called_id, VALUE klass, rb_method_visibility_t visi, const rb_method_definition_t *def);
8416const rb_method_entry_t *rb_method_entry_at(VALUE obj, ID id);
8417const rb_method_entry_t *rb_method_entry(VALUE klass, ID id);
8418const rb_method_entry_t *rb_method_entry_with_refinements(VALUE klass, ID id, VALUE *defined_class);
8419const rb_method_entry_t *rb_method_entry_without_refinements(VALUE klass, ID id, VALUE *defined_class);
8420const rb_method_entry_t *rb_resolve_refined_method(VALUE refinements, const rb_method_entry_t *me);
8423const rb_method_entry_t *rb_resolve_me_location(const rb_method_entry_t *, VALUE[5]);
8426const rb_callable_method_entry_t *rb_callable_method_entry(VALUE klass, ID id);
8427const rb_callable_method_entry_t *rb_callable_method_entry_with_refinements(VALUE klass, ID id, VALUE *defined_class);
8428const rb_callable_method_entry_t *rb_callable_method_entry_without_refinements(VALUE klass, ID id, VALUE *defined_class);
8429int rb_method_entry_arity(const rb_method_entry_t *me);
8430int rb_method_entry_eq(const rb_method_entry_t *m1, const rb_method_entry_t *m2);
8431st_index_t rb_hash_method_entry(st_index_t hash, const rb_method_entry_t *me);
8432VALUE rb_method_entry_location(const rb_method_entry_t *me);
8433void rb_free_method_entry(const rb_method_entry_t *me);
8434const rb_method_entry_t *rb_method_entry_clone(const rb_method_entry_t *me);
8435const rb_callable_method_entry_t *rb_method_entry_complement_defined_class(const rb_method_entry_t *src_me, ID called_id, VALUE defined_class);
8436void rb_method_entry_copy(rb_method_entry_t *dst, const rb_method_entry_t *src);
8437void rb_method_table_insert(VALUE klass, struct rb_id_table *table, ID method_id, const rb_method_entry_t *me);
8438void rb_scope_visibility_set(rb_method_visibility_t);
8439VALUE rb_unnamed_parameters(int arity);
8440void rb_clear_method_cache(VALUE klass_or_module, ID mid);
8441void rb_clear_method_cache_all(void);
8549typedef struct rb_code_position_struct {
8552} rb_code_position_t;
8553typedef struct rb_code_location_struct {
8554 rb_code_position_t beg_pos;
8555 rb_code_position_t end_pos;
8556} rb_code_location_t;
8557static inline rb_code_location_t
8558code_loc_gen(const rb_code_location_t *loc1, const rb_code_location_t *loc2)
8560 rb_code_location_t loc;
8561 loc.beg_pos = loc1->beg_pos;
8562 loc.end_pos = loc2->end_pos;
8565typedef struct rb_ast_id_table {
8569typedef struct RNode {
8575 rb_ast_id_table_t *tbl;
8587 struct rb_args_info *args;
8588 struct rb_ary_pattern_info *apinfo;
8589 struct rb_fnd_pattern_info *fpinfo;
8592 rb_code_location_t nd_loc;
8595VALUE rb_node_case_when_optimizable_literal(const NODE *const node);
8598typedef struct node_buffer_struct node_buffer_t;
8599typedef struct rb_ast_body_struct {
8601 VALUE compile_option;
8604typedef struct rb_ast_struct {
8606 node_buffer_t *node_buffer;
8609rb_ast_t *rb_ast_new(void);
8610void rb_ast_mark(rb_ast_t*);
8611void rb_ast_update_references(rb_ast_t*);
8612void rb_ast_dispose(rb_ast_t*);
8613void rb_ast_free(rb_ast_t*);
8614size_t rb_ast_memsize(const rb_ast_t*);
8615void rb_ast_add_mark_object(rb_ast_t*, VALUE);
8616NODE *rb_ast_newnode(rb_ast_t*, enum node_type type);
8617void rb_ast_delete_node(rb_ast_t*, NODE *n);
8618rb_ast_id_table_t *rb_ast_new_local_table(rb_ast_t*, int);
8619rb_ast_id_table_t *rb_ast_resize_latest_local_table(rb_ast_t*, int);
8620VALUE rb_parser_new(void);
8621VALUE rb_parser_end_seen_p(VALUE);
8622VALUE rb_parser_encoding(VALUE);
8623VALUE rb_parser_set_yydebug(VALUE, VALUE);
8624VALUE rb_parser_dump_tree(const NODE *node, int comment);
8625void rb_parser_set_options(VALUE, int, int, int, int);
8626rb_ast_t *rb_parser_compile_string(VALUE, const char*, VALUE, int);
8627rb_ast_t *rb_parser_compile_string_path(VALUE vparser, VALUE fname, VALUE src, int line);
8628rb_ast_t *rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE input, int line);
8629rb_ast_t *rb_parser_compile_generic(VALUE vparser, VALUE (*lex_gets)(VALUE, int), VALUE fname, VALUE input, int line);
8630void rb_node_init(NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2);
8631const char *ruby_node_name(int node);
8632const struct kwtable *rb_reserved_word(const char *, unsigned int);
8633struct rb_args_info {
8644 unsigned int no_kwarg: 1;
8645 unsigned int ruby2_keywords: 1;
8648struct rb_ary_pattern_info {
8653struct rb_fnd_pattern_info {
8656 NODE *post_rest_arg;
8658struct parser_params;
8659void *rb_parser_malloc(struct parser_params *, size_t);
8660void *rb_parser_realloc(struct parser_params *, void *, size_t);
8661void *rb_parser_calloc(struct parser_params *, size_t, size_t);
8662void rb_parser_free(struct parser_params *, void *);
8663__attribute__((__format__(__printf__, (2), (3)))) void rb_parser_printf(struct parser_params *parser, const char *fmt, ...);
8664void rb_ast_node_type_change(NODE *n, enum node_type type);
8668rb_node_set_type(NODE *n, enum node_type t)
8670 return (n)->flags=(((n)->flags&~(((VALUE)0x7f)<<8))|((((unsigned long)(t))<<8)&(((VALUE)0x7f)<<8)));
8673nd_type_p(const NODE *n, enum node_type t)
8675 return (enum node_type)((int) (((n)->flags & (((VALUE)0x7f)<<8))>>8)) == t;
8677typedef unsigned int rb_atomic_t;
8678__attribute__((__artificial__))
8680__attribute__((__nonnull__ (1)))
8681static inline rb_atomic_t
8682rbimpl_atomic_fetch_add(volatile rb_atomic_t *ptr, rb_atomic_t val)
8684 return __atomic_fetch_add(ptr, val, 5);
8686__attribute__((__artificial__))
8688__attribute__((__nonnull__ (1)))
8690rbimpl_atomic_add(volatile rb_atomic_t *ptr, rb_atomic_t val)
8692 __atomic_add_fetch(ptr, val, 5);
8694__attribute__((__artificial__))
8696__attribute__((__nonnull__ (1)))
8698rbimpl_atomic_size_add(volatile size_t *ptr, size_t val)
8700 __atomic_add_fetch(ptr, val, 5);
8702__attribute__((__artificial__))
8704__attribute__((__nonnull__ (1)))
8706rbimpl_atomic_inc(volatile rb_atomic_t *ptr)
8708 rbimpl_atomic_add(ptr, 1);
8710__attribute__((__artificial__))
8712__attribute__((__nonnull__ (1)))
8714rbimpl_atomic_size_inc(volatile size_t *ptr)
8716 rbimpl_atomic_size_add(ptr, 1);
8718__attribute__((__artificial__))
8720__attribute__((__nonnull__ (1)))
8721static inline rb_atomic_t
8722rbimpl_atomic_fetch_sub(volatile rb_atomic_t *ptr, rb_atomic_t val)
8724 return __atomic_fetch_sub(ptr, val, 5);
8726__attribute__((__artificial__))
8728__attribute__((__nonnull__ (1)))
8730rbimpl_atomic_sub(volatile rb_atomic_t *ptr, rb_atomic_t val)
8732 __atomic_sub_fetch(ptr, val, 5);
8734__attribute__((__artificial__))
8736__attribute__((__nonnull__ (1)))
8738rbimpl_atomic_size_sub(volatile size_t *ptr, size_t val)
8740 __atomic_sub_fetch(ptr, val, 5);
8742__attribute__((__artificial__))
8744__attribute__((__nonnull__ (1)))
8746rbimpl_atomic_dec(volatile rb_atomic_t *ptr)
8748 rbimpl_atomic_sub(ptr, 1);
8750__attribute__((__artificial__))
8752__attribute__((__nonnull__ (1)))
8754rbimpl_atomic_size_dec(volatile size_t *ptr)
8756 rbimpl_atomic_size_sub(ptr, 1);
8758__attribute__((__artificial__))
8760__attribute__((__nonnull__ (1)))
8762rbimpl_atomic_or(volatile rb_atomic_t *ptr, rb_atomic_t val)
8764 __atomic_or_fetch(ptr, val, 5);
8766__attribute__((__artificial__))
8768__attribute__((__nonnull__ (1)))
8769static inline rb_atomic_t
8770rbimpl_atomic_exchange(volatile rb_atomic_t *ptr, rb_atomic_t val)
8772 return __atomic_exchange_n(ptr, val, 5);
8774__attribute__((__artificial__))
8776__attribute__((__nonnull__ (1)))
8778rbimpl_atomic_size_exchange(volatile size_t *ptr, size_t val)
8780 return __atomic_exchange_n(ptr, val, 5);
8782__attribute__((__artificial__))
8784__attribute__((__nonnull__ (1)))
8786rbimpl_atomic_ptr_exchange(void *volatile *ptr, const void *val)
8788 __extension__ _Static_assert(sizeof *ptr == sizeof(size_t), "sizeof_voidp" ": " "sizeof *ptr == sizeof(size_t)");
8789 const size_t sval = ((size_t)val);
8790 volatile size_t *const sptr = ((volatile size_t *)ptr);
8791 const size_t sret = rbimpl_atomic_size_exchange(sptr, sval);
8792 return ((void *)sret);
8794__attribute__((__artificial__))
8796__attribute__((__nonnull__ (1)))
8798rbimpl_atomic_value_exchange(volatile VALUE *ptr, VALUE val)
8800 __extension__ _Static_assert(sizeof *ptr == sizeof(size_t), "sizeof_value" ": " "sizeof *ptr == sizeof(size_t)");
8801 const size_t sval = ((size_t)val);
8802 volatile size_t *const sptr = ((volatile size_t *)ptr);
8803 const size_t sret = rbimpl_atomic_size_exchange(sptr, sval);
8804 return ((VALUE)sret);
8806__attribute__((__artificial__))
8808__attribute__((__nonnull__ (1)))
8810rbimpl_atomic_set(volatile rb_atomic_t *ptr, rb_atomic_t val)
8812 __atomic_store_n(ptr, val, 5);
8814__attribute__((__artificial__))
8816__attribute__((__nonnull__ (1)))
8817static inline rb_atomic_t
8818rbimpl_atomic_cas(volatile rb_atomic_t *ptr, rb_atomic_t oldval, rb_atomic_t newval)
8820 __atomic_compare_exchange_n(
8821 ptr, &oldval, newval, 0, 5, 5);
8824__attribute__((__artificial__))
8826__attribute__((__nonnull__ (1)))
8828rbimpl_atomic_size_cas(volatile size_t *ptr, size_t oldval, size_t newval)
8830 __atomic_compare_exchange_n(
8831 ptr, &oldval, newval, 0, 5, 5);
8834__attribute__((__artificial__))
8836__attribute__((__nonnull__ (1)))
8838rbimpl_atomic_ptr_cas(void **ptr, const void *oldval, const void *newval)
8840 __extension__ _Static_assert(sizeof *ptr == sizeof(size_t), "sizeof_voidp" ": " "sizeof *ptr == sizeof(size_t)");
8841 const size_t snew = ((size_t)newval);
8842 const size_t sold = ((size_t)oldval);
8843 volatile size_t *const sptr = ((volatile size_t *)ptr);
8844 const size_t sret = rbimpl_atomic_size_cas(sptr, sold, snew);
8845 return ((void *)sret);
8847__attribute__((__artificial__))
8849__attribute__((__nonnull__ (1)))
8851rbimpl_atomic_value_cas(volatile VALUE *ptr, VALUE oldval, VALUE newval)
8853 __extension__ _Static_assert(sizeof *ptr == sizeof(size_t), "sizeof_value" ": " "sizeof *ptr == sizeof(size_t)");
8854 const size_t snew = ((size_t)newval);
8855 const size_t sold = ((size_t)oldval);
8856 volatile size_t *const sptr = ((volatile size_t *)ptr);
8857 const size_t sret = rbimpl_atomic_size_cas(sptr, sold, snew);
8858 return ((VALUE)sret);
8860typedef struct rb_darray_meta {
8864static inline int32_t
8865rb_darray_size(const void *ary)
8867 const rb_darray_meta_t *meta = ary;
8868 return meta ? meta->size : 0;
8870static inline int32_t
8871rb_darray_capa(const void *ary)
8873 const rb_darray_meta_t *meta = ary;
8874 return meta ? meta->capa : 0;
8877rb_darray_free(void *ary)
8882rb_darray_buffer_size(int32_t capacity, size_t header_size, size_t element_size)
8884 if (capacity == 0) return 0;
8885 return header_size + (size_t)capacity * element_size;
8888rb_darray_ensure_space(void *ptr_to_ary, size_t header_size, size_t element_size)
8890 rb_darray_meta_t **ptr_to_ptr_to_meta = ptr_to_ary;
8891 rb_darray_meta_t *meta = *ptr_to_ptr_to_meta;
8892 int32_t current_capa = rb_darray_capa(meta);
8893 if (rb_darray_size(meta) < current_capa) return 1;
8895 if (current_capa == 0) {
8899 int64_t doubled = 2 * (int64_t)current_capa;
8900 new_capa = (int32_t)doubled;
8901 if (new_capa != doubled) return 0;
8903 size_t current_buffer_size = rb_darray_buffer_size(current_capa, header_size, element_size);
8904 size_t new_buffer_size = rb_darray_buffer_size(new_capa, header_size, element_size);
8905 if (new_buffer_size <= current_buffer_size) return 0;
8906 rb_darray_meta_t *doubled_ary = realloc(meta, new_buffer_size);
8907 if (!doubled_ary) return 0;
8908 if (meta == ((void *)0)) {
8909 doubled_ary->size = 0;
8911 doubled_ary->capa = new_capa;
8912 ruby_nonempty_memcpy(ptr_to_ary, &doubled_ary, sizeof(doubled_ary));
8916rb_darray_make_impl(void *ptr_to_ary, int32_t array_size, size_t header_size, size_t element_size)
8918 rb_darray_meta_t **ptr_to_ptr_to_meta = ptr_to_ary;
8919 if (array_size < 0) return 0;
8920 if (array_size == 0) {
8921 *ptr_to_ptr_to_meta = ((void *)0);
8924 size_t buffer_size = rb_darray_buffer_size(array_size, header_size, element_size);
8925 rb_darray_meta_t *meta = calloc(buffer_size, 1);
8926 if (!meta) return 0;
8927 meta->size = array_size;
8928 meta->capa = array_size;
8929 ruby_nonempty_memcpy(ptr_to_ary, &meta, sizeof(meta));
8937extern int clone (int (*__fn) (void *__arg), void *__child_stack,
8938 int __flags, void *__arg, ...) __attribute__ ((__nothrow__ , __leaf__));
8939extern int unshare (int __flags) __attribute__ ((__nothrow__ , __leaf__));
8940extern int sched_getcpu (void) __attribute__ ((__nothrow__ , __leaf__));
8941extern int getcpu (unsigned int *, unsigned int *) __attribute__ ((__nothrow__ , __leaf__));
8942extern int setns (int __fd, int __nstype) __attribute__ ((__nothrow__ , __leaf__));
8944typedef unsigned long int __cpu_mask;
8947 __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))];
8950extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp)
8951 __attribute__ ((__nothrow__ , __leaf__));
8952extern cpu_set_t *__sched_cpualloc (size_t __count) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__warn_unused_result__));
8953extern void __sched_cpufree (cpu_set_t *__set) __attribute__ ((__nothrow__ , __leaf__));
8956extern int sched_setparam (__pid_t __pid, const struct sched_param *__param)
8957 __attribute__ ((__nothrow__ , __leaf__));
8958extern int sched_getparam (__pid_t __pid, struct sched_param *__param) __attribute__ ((__nothrow__ , __leaf__));
8959extern int sched_setscheduler (__pid_t __pid, int __policy,
8960 const struct sched_param *__param) __attribute__ ((__nothrow__ , __leaf__));
8961extern int sched_getscheduler (__pid_t __pid) __attribute__ ((__nothrow__ , __leaf__));
8962extern int sched_yield (void) __attribute__ ((__nothrow__ , __leaf__));
8963extern int sched_get_priority_max (int __algorithm) __attribute__ ((__nothrow__ , __leaf__));
8964extern int sched_get_priority_min (int __algorithm) __attribute__ ((__nothrow__ , __leaf__));
8965extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __attribute__ ((__nothrow__ , __leaf__));
8966extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
8967 const cpu_set_t *__cpuset) __attribute__ ((__nothrow__ , __leaf__));
8968extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,
8969 cpu_set_t *__cpuset) __attribute__ ((__nothrow__ , __leaf__));
8973 PTHREAD_CREATE_JOINABLE,
8974 PTHREAD_CREATE_DETACHED
8978 PTHREAD_MUTEX_TIMED_NP,
8979 PTHREAD_MUTEX_RECURSIVE_NP,
8980 PTHREAD_MUTEX_ERRORCHECK_NP,
8981 PTHREAD_MUTEX_ADAPTIVE_NP
8983 PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP,
8984 PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
8985 PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
8986 PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
8987 , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP
8991 PTHREAD_MUTEX_STALLED,
8992 PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED,
8993 PTHREAD_MUTEX_ROBUST,
8994 PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST
8999 PTHREAD_PRIO_INHERIT,
9000 PTHREAD_PRIO_PROTECT
9004 PTHREAD_RWLOCK_PREFER_READER_NP,
9005 PTHREAD_RWLOCK_PREFER_WRITER_NP,
9006 PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
9007 PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP
9011 PTHREAD_INHERIT_SCHED,
9012 PTHREAD_EXPLICIT_SCHED
9016 PTHREAD_SCOPE_SYSTEM,
9017 PTHREAD_SCOPE_PROCESS
9021 PTHREAD_PROCESS_PRIVATE,
9022 PTHREAD_PROCESS_SHARED
9024struct _pthread_cleanup_buffer
9026 void (*__routine) (void *);
9029 struct _pthread_cleanup_buffer *__prev;
9033 PTHREAD_CANCEL_ENABLE,
9034 PTHREAD_CANCEL_DISABLE
9038 PTHREAD_CANCEL_DEFERRED,
9039 PTHREAD_CANCEL_ASYNCHRONOUS
9042extern int pthread_create (pthread_t *__restrict __newthread,
9043 const pthread_attr_t *__restrict __attr,
9044 void *(*__start_routine) (void *),
9045 void *__restrict __arg) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
9046extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));
9047extern int pthread_join (pthread_t __th, void **__thread_return);
9048extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __attribute__ ((__nothrow__ , __leaf__));
9049extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
9050 const struct timespec *__abstime);
9051extern int pthread_clockjoin_np (pthread_t __th, void **__thread_return,
9052 clockid_t __clockid,
9053 const struct timespec *__abstime);
9054extern int pthread_detach (pthread_t __th) __attribute__ ((__nothrow__ , __leaf__));
9055extern pthread_t pthread_self (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
9056extern int pthread_equal (pthread_t __thread1, pthread_t __thread2)
9057 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
9058extern int pthread_attr_init (pthread_attr_t *__attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9059extern int pthread_attr_destroy (pthread_attr_t *__attr)
9060 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9061extern int pthread_attr_getdetachstate (const pthread_attr_t *__attr,
9063 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9064extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,
9066 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9067extern int pthread_attr_getguardsize (const pthread_attr_t *__attr,
9068 size_t *__guardsize)
9069 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9070extern int pthread_attr_setguardsize (pthread_attr_t *__attr,
9072 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9073extern int pthread_attr_getschedparam (const pthread_attr_t *__restrict __attr,
9074 struct sched_param *__restrict __param)
9075 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9076extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
9077 const struct sched_param *__restrict
9078 __param) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9079extern int pthread_attr_getschedpolicy (const pthread_attr_t *__restrict
9080 __attr, int *__restrict __policy)
9081 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9082extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)
9083 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9084extern int pthread_attr_getinheritsched (const pthread_attr_t *__restrict
9085 __attr, int *__restrict __inherit)
9086 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9087extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,
9089 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9090extern int pthread_attr_getscope (const pthread_attr_t *__restrict __attr,
9091 int *__restrict __scope)
9092 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9093extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)
9094 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9095extern int pthread_attr_getstackaddr (const pthread_attr_t *__restrict
9096 __attr, void **__restrict __stackaddr)
9097 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__));
9098extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
9100 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__));
9101extern int pthread_attr_getstacksize (const pthread_attr_t *__restrict
9102 __attr, size_t *__restrict __stacksize)
9103 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9104extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
9106 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9107extern int pthread_attr_getstack (const pthread_attr_t *__restrict __attr,
9108 void **__restrict __stackaddr,
9109 size_t *__restrict __stacksize)
9110 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2, 3)));
9111extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
9112 size_t __stacksize) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9113extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
9114 size_t __cpusetsize,
9115 const cpu_set_t *__cpuset)
9116 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
9117extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr,
9118 size_t __cpusetsize,
9119 cpu_set_t *__cpuset)
9120 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
9121extern int pthread_getattr_default_np (pthread_attr_t *__attr)
9122 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9123extern int pthread_attr_setsigmask_np (pthread_attr_t *__attr,
9124 const __sigset_t *sigmask);
9125extern int pthread_attr_getsigmask_np (const pthread_attr_t *__attr,
9126 __sigset_t *sigmask);
9127extern int pthread_setattr_default_np (const pthread_attr_t *__attr)
9128 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9129extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr)
9130 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
9131extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
9132 const struct sched_param *__param)
9133 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
9134extern int pthread_getschedparam (pthread_t __target_thread,
9135 int *__restrict __policy,
9136 struct sched_param *__restrict __param)
9137 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2, 3)));
9138extern int pthread_setschedprio (pthread_t __target_thread, int __prio)
9139 __attribute__ ((__nothrow__ , __leaf__));
9140extern int pthread_getname_np (pthread_t __target_thread, char *__buf,
9142 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
9143extern int pthread_setname_np (pthread_t __target_thread, const char *__name)
9144 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
9145extern int pthread_getconcurrency (void) __attribute__ ((__nothrow__ , __leaf__));
9146extern int pthread_setconcurrency (int __level) __attribute__ ((__nothrow__ , __leaf__));
9147extern int pthread_yield (void) __attribute__ ((__nothrow__ , __leaf__));
9148extern int pthread_yield (void) __asm__ ("" "sched_yield") __attribute__ ((__nothrow__ , __leaf__))
9149 __attribute__ ((__deprecated__ ("pthread_yield is deprecated, use sched_yield instead")));
9150extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize,
9151 const cpu_set_t *__cpuset)
9152 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
9153extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize,
9154 cpu_set_t *__cpuset)
9155 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (3)));
9156extern int pthread_once (pthread_once_t *__once_control,
9157 void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2)));
9158extern int pthread_setcancelstate (int __state, int *__oldstate);
9159extern int pthread_setcanceltype (int __type, int *__oldtype);
9160extern int pthread_cancel (pthread_t __th);
9161extern void pthread_testcancel (void);
9162struct __cancel_jmp_buf_tag
9164 __jmp_buf __cancel_jmp_buf;
9165 int __mask_was_saved;
9169 struct __cancel_jmp_buf_tag __cancel_jmp_buf[1];
9171} __pthread_unwind_buf_t __attribute__ ((__aligned__));
9172struct __pthread_cleanup_frame
9174 void (*__cancel_routine) (void *);
9179extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf)
9181extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf)
9183extern void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf)
9185extern void __pthread_unregister_cancel_restore (__pthread_unwind_buf_t *__buf)
9187extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf)
9188 __attribute__ ((__noreturn__))
9189 __attribute__ ((__weak__))
9191extern int __sigsetjmp_cancel (struct __cancel_jmp_buf_tag __env[1], int __savemask) __asm__ ("" "__sigsetjmp") __attribute__ ((__nothrow__)) __attribute__ ((__returns_twice__));
9192extern int pthread_mutex_init (pthread_mutex_t *__mutex,
9193 const pthread_mutexattr_t *__mutexattr)
9194 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9195extern int pthread_mutex_destroy (pthread_mutex_t *__mutex)
9196 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9197extern int pthread_mutex_trylock (pthread_mutex_t *__mutex)
9198 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9199extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
9200 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9201extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
9202 const struct timespec *__restrict
9203 __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9204extern int pthread_mutex_clocklock (pthread_mutex_t *__restrict __mutex,
9205 clockid_t __clockid,
9206 const struct timespec *__restrict
9207 __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
9208extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
9209 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9210extern int pthread_mutex_getprioceiling (const pthread_mutex_t *
9212 int *__restrict __prioceiling)
9213 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9214extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
9216 int *__restrict __old_ceiling)
9217 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 3)));
9218extern int pthread_mutex_consistent (pthread_mutex_t *__mutex)
9219 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9220extern int pthread_mutex_consistent_np (pthread_mutex_t *) __asm__ ("" "pthread_mutex_consistent") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)))
9221 __attribute__ ((__deprecated__ ("pthread_mutex_consistent_np is deprecated, use pthread_mutex_consistent")));
9222extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr)
9223 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9224extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr)
9225 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9226extern int pthread_mutexattr_getpshared (const pthread_mutexattr_t *
9228 int *__restrict __pshared)
9229 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9230extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
9232 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9233extern int pthread_mutexattr_gettype (const pthread_mutexattr_t *__restrict
9234 __attr, int *__restrict __kind)
9235 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9236extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
9237 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9238extern int pthread_mutexattr_getprotocol (const pthread_mutexattr_t *
9240 int *__restrict __protocol)
9241 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9242extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr,
9244 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9245extern int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t *
9247 int *__restrict __prioceiling)
9248 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9249extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr,
9251 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9252extern int pthread_mutexattr_getrobust (const pthread_mutexattr_t *__attr,
9254 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9255extern int pthread_mutexattr_getrobust_np (pthread_mutexattr_t *, int *) __asm__ ("" "pthread_mutexattr_getrobust") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)))
9256 __attribute__ ((__deprecated__ ("pthread_mutexattr_getrobust_np is deprecated, use pthread_mutexattr_getrobust")));
9257extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr,
9259 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9260extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *, int) __asm__ ("" "pthread_mutexattr_setrobust") __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)))
9261 __attribute__ ((__deprecated__ ("pthread_mutexattr_setrobust_np is deprecated, use pthread_mutexattr_setrobust")));
9262extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
9263 const pthread_rwlockattr_t *__restrict
9264 __attr) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9265extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock)
9266 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9267extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock)
9268 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9269extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
9270 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9271extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
9272 const struct timespec *__restrict
9273 __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9274extern int pthread_rwlock_clockrdlock (pthread_rwlock_t *__restrict __rwlock,
9275 clockid_t __clockid,
9276 const struct timespec *__restrict
9277 __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
9278extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock)
9279 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9280extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
9281 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9282extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
9283 const struct timespec *__restrict
9284 __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
9285extern int pthread_rwlock_clockwrlock (pthread_rwlock_t *__restrict __rwlock,
9286 clockid_t __clockid,
9287 const struct timespec *__restrict
9288 __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
9289extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock)
9290 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9291extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr)
9292 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9293extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr)
9294 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9295extern int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t *
9297 int *__restrict __pshared)
9298 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9299extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
9301 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9302extern int pthread_rwlockattr_getkind_np (const pthread_rwlockattr_t *
9304 int *__restrict __pref)
9305 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9306extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
9307 int __pref) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9308extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
9309 const pthread_condattr_t *__restrict __cond_attr)
9310 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9311extern int pthread_cond_destroy (pthread_cond_t *__cond)
9312 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9313extern int pthread_cond_signal (pthread_cond_t *__cond)
9314 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9315extern int pthread_cond_broadcast (pthread_cond_t *__cond)
9316 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9317extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
9318 pthread_mutex_t *__restrict __mutex)
9319 __attribute__ ((__nonnull__ (1, 2)));
9320extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
9321 pthread_mutex_t *__restrict __mutex,
9322 const struct timespec *__restrict __abstime)
9323 __attribute__ ((__nonnull__ (1, 2, 3)));
9324extern int pthread_cond_clockwait (pthread_cond_t *__restrict __cond,
9325 pthread_mutex_t *__restrict __mutex,
9326 __clockid_t __clock_id,
9327 const struct timespec *__restrict __abstime)
9328 __attribute__ ((__nonnull__ (1, 2, 4)));
9329extern int pthread_condattr_init (pthread_condattr_t *__attr)
9330 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9331extern int pthread_condattr_destroy (pthread_condattr_t *__attr)
9332 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9333extern int pthread_condattr_getpshared (const pthread_condattr_t *
9335 int *__restrict __pshared)
9336 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9337extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
9338 int __pshared) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9339extern int pthread_condattr_getclock (const pthread_condattr_t *
9341 __clockid_t *__restrict __clock_id)
9342 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9343extern int pthread_condattr_setclock (pthread_condattr_t *__attr,
9344 __clockid_t __clock_id)
9345 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9346extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)
9347 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9348extern int pthread_spin_destroy (pthread_spinlock_t *__lock)
9349 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9350extern int pthread_spin_lock (pthread_spinlock_t *__lock)
9351 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9352extern int pthread_spin_trylock (pthread_spinlock_t *__lock)
9353 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9354extern int pthread_spin_unlock (pthread_spinlock_t *__lock)
9355 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9356extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
9357 const pthread_barrierattr_t *__restrict
9358 __attr, unsigned int __count)
9359 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9360extern int pthread_barrier_destroy (pthread_barrier_t *__barrier)
9361 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9362extern int pthread_barrier_wait (pthread_barrier_t *__barrier)
9363 __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
9364extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr)
9365 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9366extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr)
9367 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9368extern int pthread_barrierattr_getpshared (const pthread_barrierattr_t *
9370 int *__restrict __pshared)
9371 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1, 2)));
9372extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
9374 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9375extern int pthread_key_create (pthread_key_t *__key,
9376 void (*__destr_function) (void *))
9377 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (1)));
9378extern int pthread_key_delete (pthread_key_t __key) __attribute__ ((__nothrow__ , __leaf__));
9379extern void *pthread_getspecific (pthread_key_t __key) __attribute__ ((__nothrow__ , __leaf__));
9380extern int pthread_setspecific (pthread_key_t __key,
9381 const void *__pointer)
9382 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__access__ (__none__, 2)));
9383extern int pthread_getcpuclockid (pthread_t __thread_id,
9384 __clockid_t *__clock_id)
9385 __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__nonnull__ (2)));
9386extern int pthread_atfork (void (*__prepare) (void),
9387 void (*__parent) (void),
9388 void (*__child) (void)) __attribute__ ((__nothrow__ , __leaf__));
9389extern __inline __attribute__ ((__gnu_inline__)) int
9390__attribute__ ((__nothrow__ , __leaf__)) pthread_equal (pthread_t __thread1, pthread_t __thread2)
9392 return __thread1 == __thread2;
9395typedef pthread_t rb_nativethread_id_t;
9396typedef pthread_mutex_t rb_nativethread_lock_t;
9397typedef pthread_cond_t rb_nativethread_cond_t;
9400rb_nativethread_id_t rb_nativethread_self(void);
9401void rb_nativethread_lock_initialize(rb_nativethread_lock_t *lock);
9402void rb_nativethread_lock_destroy(rb_nativethread_lock_t *lock);
9403void rb_nativethread_lock_lock(rb_nativethread_lock_t *lock);
9404void rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock);
9405void rb_native_mutex_lock(rb_nativethread_lock_t *lock);
9406int rb_native_mutex_trylock(rb_nativethread_lock_t *lock);
9407void rb_native_mutex_unlock(rb_nativethread_lock_t *lock);
9408void rb_native_mutex_initialize(rb_nativethread_lock_t *lock);
9409void rb_native_mutex_destroy(rb_nativethread_lock_t *lock);
9410void rb_native_cond_signal(rb_nativethread_cond_t *cond);
9411void rb_native_cond_broadcast(rb_nativethread_cond_t *cond);
9412void rb_native_cond_wait(rb_nativethread_cond_t *cond, rb_nativethread_lock_t *mutex);
9413void rb_native_cond_timedwait(rb_nativethread_cond_t *cond, rb_nativethread_lock_t *mutex, unsigned long msec);
9414void rb_native_cond_initialize(rb_nativethread_cond_t *cond);
9415void rb_native_cond_destroy(rb_nativethread_cond_t *cond);
9418typedef struct native_thread_data_struct {
9420 struct list_node ubf;
9421 struct list_node gvl;
9425 rb_nativethread_cond_t intr;
9426 rb_nativethread_cond_t gvlq;
9428} native_thread_data_t;
9429typedef struct rb_global_vm_lock_struct {
9430 const struct rb_thread_struct *owner;
9431 rb_nativethread_lock_t lock;
9432 struct list_head waitq;
9433 const struct rb_thread_struct *timer;
9435 rb_nativethread_cond_t switch_cond;
9436 rb_nativethread_cond_t switch_wait_cond;
9439} rb_global_vm_lock_t;
9442 extern __thread struct rb_execution_context_struct *ruby_current_ec;
9445void *rb_allocate_sigaltstack(void);
9446void *rb_register_sigaltstack(void *);
9447void rb_vm_encoded_insn_data_table_init(void);
9448typedef unsigned long rb_num_t;
9449typedef signed long rb_snum_t;
9451 RUBY_TAG_NONE = 0x0,
9452 RUBY_TAG_RETURN = 0x1,
9453 RUBY_TAG_BREAK = 0x2,
9454 RUBY_TAG_NEXT = 0x3,
9455 RUBY_TAG_RETRY = 0x4,
9456 RUBY_TAG_REDO = 0x5,
9457 RUBY_TAG_RAISE = 0x6,
9458 RUBY_TAG_THROW = 0x7,
9459 RUBY_TAG_FATAL = 0x8,
9462enum ruby_vm_throw_flags {
9463 VM_THROW_NO_ESCAPE_FLAG = 0x8000,
9464 VM_THROW_STATE_MASK = 0xff
9466struct rb_thread_struct;
9467struct rb_control_frame_struct;
9468typedef struct rb_compile_option_struct rb_compile_option_t;
9469union ic_serial_entry {
9473struct iseq_inline_constant_cache_entry {
9476 union ic_serial_entry ic_serial;
9477 const rb_cref_t *ic_cref;
9479__extension__ _Static_assert((__builtin_offsetof (struct iseq_inline_constant_cache_entry, ic_cref) + sizeof(const rb_cref_t *)) <= sizeof(struct RObject), "sizeof_iseq_inline_constant_cache_entry" ": " "(offsetof(struct iseq_inline_constant_cache_entry, ic_cref) + sizeof(const rb_cref_t *)) <= sizeof(struct RObject)");
9480struct iseq_inline_constant_cache {
9481 struct iseq_inline_constant_cache_entry *entry;
9482 unsigned get_insn_idx;
9484struct iseq_inline_iv_cache_entry {
9485 struct rb_iv_index_tbl_entry *entry;
9487struct iseq_inline_cvar_cache_entry {
9488 struct rb_cvar_class_tbl_entry *entry;
9490union iseq_inline_storage_entry {
9492 struct rb_thread_struct *running_thread;
9495 struct iseq_inline_constant_cache ic_cache;
9496 struct iseq_inline_iv_cache_entry iv_cache;
9498struct rb_calling_info {
9499 const struct rb_callinfo *ci;
9500 const struct rb_callcache *cc;
9501 VALUE block_handler;
9506struct rb_execution_context_struct;
9507typedef struct rb_iseq_location_struct {
9513 rb_code_location_t code_location;
9514} rb_iseq_location_t;
9516pathobj_path(VALUE pathobj)
9518 if (RB_TYPE_P(pathobj, RUBY_T_STRING)) {
9523 return RARRAY_AREF(pathobj, 0);
9527pathobj_realpath(VALUE pathobj)
9529 if (RB_TYPE_P(pathobj, RUBY_T_STRING)) {
9534 return RARRAY_AREF(pathobj, 1);
9538typedef struct { rb_darray_meta_t meta; struct yjit_block_version * data[]; } * rb_yjit_block_array_t;
9539typedef struct { rb_darray_meta_t meta; rb_yjit_block_array_t data[]; } * rb_yjit_block_array_array_t;
9540struct rb_iseq_constant_body {
9552 unsigned int iseq_size;
9553 VALUE *iseq_encoded;
9556 unsigned int has_lead : 1;
9557 unsigned int has_opt : 1;
9558 unsigned int has_rest : 1;
9559 unsigned int has_post : 1;
9560 unsigned int has_kw : 1;
9561 unsigned int has_kwrest : 1;
9562 unsigned int has_block : 1;
9563 unsigned int ambiguous_param0 : 1;
9564 unsigned int accepts_no_kwarg : 1;
9565 unsigned int ruby2_keywords: 1;
9574 const VALUE *opt_table;
9575 const struct rb_iseq_param_keyword {
9581 VALUE *default_values;
9584 rb_iseq_location_t location;
9585 struct iseq_insn_info {
9586 const struct iseq_insn_info_entry *body;
9587 unsigned int *positions;
9589 struct succ_index_table *succ_index_table;
9591 const ID *local_table;
9592 struct iseq_catch_table *catch_table;
9593 const struct rb_iseq_struct *parent_iseq;
9594 struct rb_iseq_struct *local_iseq;
9595 union iseq_inline_storage_entry *is_entries;
9596 struct rb_call_data *call_data;
9598 rb_snum_t flip_count;
9601 VALUE pc2branchindex;
9602 VALUE *original_iseq;
9604 unsigned int local_table_size;
9605 unsigned int is_size;
9606 unsigned int ci_size;
9607 unsigned int stack_max;
9608 char catch_except_p;
9609 _Bool builtin_inline_p;
9610 struct rb_id_table *outer_variables;
9611 const rb_iseq_t *mandatory_only_iseq;
9612 VALUE (*jit_func)(struct rb_execution_context_struct *,
9613 struct rb_control_frame_struct *);
9614 long unsigned total_calls;
9615 struct rb_mjit_unit *jit_unit;
9616 rb_yjit_block_array_array_t yjit_blocks;
9618struct rb_iseq_struct {
9621 struct rb_iseq_constant_body *body;
9623 struct iseq_compile_data *compile_data;
9629 struct rb_hook_list_struct *local_hooks;
9630 rb_event_flag_t global_trace_events;
9634static inline const rb_iseq_t *
9635rb_iseq_check(const rb_iseq_t *iseq)
9639static inline const rb_iseq_t *
9640def_iseq_ptr(rb_method_definition_t *def)
9642 return rb_iseq_check(def->body.iseq.iseqptr);
9644enum ruby_special_exceptions {
9646 ruby_error_nomemory,
9647 ruby_error_sysstack,
9648 ruby_error_stackfatal,
9649 ruby_error_stream_closed,
9650 ruby_special_error_count
9652enum ruby_basic_operators {
9685typedef void rb_vm_at_exit_func(struct rb_vm_struct*);
9686typedef struct rb_at_exit_list {
9687 rb_vm_at_exit_func *func;
9688 struct rb_at_exit_list *next;
9691struct rb_objspace *rb_objspace_alloc(void);
9692void rb_objspace_free(struct rb_objspace *);
9693void rb_objspace_call_finalizer(struct rb_objspace *);
9694typedef struct rb_hook_list_struct {
9695 struct rb_event_hook_struct *hooks;
9696 rb_event_flag_t events;
9697 unsigned int running;
9701typedef const struct rb_builtin_function *RB_BUILTIN;
9702typedef struct rb_vm_struct {
9705 struct list_head set;
9707 unsigned int blocking_cnt;
9708 struct rb_ractor_struct *main_ractor;
9709 struct rb_thread_struct *main_thread;
9711 rb_nativethread_lock_t lock;
9712 struct rb_ractor_struct *lock_owner;
9713 unsigned int lock_rec;
9714 _Bool barrier_waiting;
9715 unsigned int barrier_cnt;
9716 rb_nativethread_cond_t barrier_cond;
9717 rb_nativethread_cond_t terminate_cond;
9718 _Bool terminate_waiting;
9721 void *main_altstack;
9722 rb_serial_t fork_gen;
9723 rb_nativethread_lock_t waitpid_lock;
9724 struct list_head waiting_pids;
9725 struct list_head waiting_grps;
9726 struct list_head waiting_fds;
9727 volatile int ubf_async_safe;
9728 unsigned int running: 1;
9729 unsigned int thread_abort_on_exception: 1;
9730 unsigned int thread_report_on_exception: 1;
9731 unsigned int thread_ignore_deadlock: 1;
9732 VALUE mark_object_ary;
9733 const VALUE special_exceptions[ruby_special_error_count];
9736 VALUE load_path_snapshot;
9737 VALUE load_path_check_cache;
9738 VALUE expanded_load_path;
9739 VALUE loaded_features;
9740 VALUE loaded_features_snapshot;
9741 VALUE loaded_features_realpaths;
9742 struct st_table *loaded_features_index;
9743 struct st_table *loading_table;
9745 VALUE cmd[(64 + 1)];
9747 struct st_table *ensure_rollback_table;
9748 struct rb_postponed_job_struct *postponed_job_buffer;
9749 rb_atomic_t postponed_job_index;
9750 int src_encoding_index;
9751 struct list_head workqueue;
9752 rb_nativethread_lock_t workqueue_lock;
9753 VALUE orig_progname, progname;
9754 VALUE coverages, me2counter;
9756 st_table * defined_module_hash;
9757 struct rb_objspace *objspace;
9758 rb_at_exit_list *at_exit;
9759 st_table *frozen_strings;
9760 const struct rb_builtin_function *builtin_function_table;
9761 int builtin_inline_index;
9762 struct rb_id_table *negative_cme_table;
9763 st_table *overloaded_cme_table;
9764 const struct rb_callcache *global_cc_cache_table[1023];
9766 size_t thread_vm_stack_size;
9767 size_t thread_machine_stack_size;
9768 size_t fiber_vm_stack_size;
9769 size_t fiber_machine_stack_size;
9771 short redefined_flag[BOP_LAST_];
9773struct rb_captured_block {
9777 const rb_iseq_t *iseq;
9778 const struct vm_ifunc *ifunc;
9782enum rb_block_handler_type {
9783 block_handler_type_iseq,
9784 block_handler_type_ifunc,
9785 block_handler_type_symbol,
9786 block_handler_type_proc
9796 struct rb_captured_block captured;
9800 enum rb_block_type type;
9802typedef struct rb_control_frame_struct {
9805 const rb_iseq_t *iseq;
9808 const void *block_code;
9811} rb_control_frame_t;
9812extern const rb_data_type_t ruby_threadptr_data_type;
9813static inline struct rb_thread_struct *
9814rb_thread_ptr(VALUE thval)
9816 return (struct rb_thread_struct *)rb_check_typeddata(thval, &ruby_threadptr_data_type);
9818enum rb_thread_status {
9821 THREAD_STOPPED_FOREVER,
9824typedef void *rb_jmpbuf_t[5];
9829 struct rb_vm_tag *prev;
9830 enum ruby_tag_type state;
9831 unsigned int lock_rec;
9833__extension__ _Static_assert(__builtin_offsetof (struct rb_vm_tag, buf) > 0, "rb_vm_tag_buf_offset" ": " "offsetof(struct rb_vm_tag, buf) > 0");
9834__extension__ _Static_assert(__builtin_offsetof (struct rb_vm_tag, buf) + sizeof(rb_jmpbuf_t) < sizeof(struct rb_vm_tag), "rb_vm_tag_buf_end" ": " "offsetof(struct rb_vm_tag, buf) + sizeof(rb_jmpbuf_t) < sizeof(struct rb_vm_tag)");
9835struct rb_unblock_callback {
9836 rb_unblock_function_t *func;
9839struct rb_mutex_struct;
9840typedef struct rb_ensure_entry {
9842 VALUE (*e_proc)(VALUE);
9845typedef struct rb_ensure_list {
9846 struct rb_ensure_list *next;
9847 struct rb_ensure_entry entry;
9849typedef char rb_thread_id_string_t[sizeof(rb_nativethread_id_t) * 2 + 3];
9850typedef struct rb_fiber_struct rb_fiber_t;
9851struct rb_waiting_list {
9852 struct rb_waiting_list *next;
9853 struct rb_thread_struct *thread;
9854 struct rb_fiber_struct *fiber;
9856struct rb_execution_context_struct {
9858 size_t vm_stack_size;
9859 rb_control_frame_t *cfp;
9860 struct rb_vm_tag *tag;
9861 rb_atomic_t interrupt_flag;
9862 rb_atomic_t interrupt_mask;
9863 rb_fiber_t *fiber_ptr;
9864 struct rb_thread_struct *thread_ptr;
9865 struct rb_id_table *local_storage;
9866 VALUE local_storage_recursive_hash;
9867 VALUE local_storage_recursive_hash_for_trace;
9868 const VALUE *root_lep;
9870 rb_ensure_list_t *ensure_list;
9871 struct rb_trace_arg_struct *trace_arg;
9873 VALUE passed_block_handler;
9874 uint8_t raised_flag;
9875 enum method_missing_reason method_missing_reason : 8;
9876 VALUE private_const_reference;
9880 size_t stack_maxsize;
9881 __attribute__((__aligned__(8))) jmp_buf regs;
9884typedef struct rb_execution_context_struct rb_execution_context_t;
9885void rb_ec_set_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size);
9886void rb_ec_initialize_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size);
9887void rb_ec_clear_vm_stack(rb_execution_context_t *ec);
9888struct rb_ext_config {
9891typedef struct rb_ractor_struct rb_ractor_t;
9892typedef struct rb_thread_struct {
9893 struct list_node lt_node;
9895 rb_ractor_t *ractor;
9897 rb_execution_context_t *ec;
9899 struct rb_calling_info *calling;
9902 rb_nativethread_id_t thread_id;
9904 enum rb_thread_status status : 2;
9905 unsigned int to_kill : 1;
9906 unsigned int abort_on_exception: 1;
9907 unsigned int report_on_exception: 1;
9908 unsigned int pending_interrupt_queue_checked: 1;
9910 uint32_t running_time_us;
9911 native_thread_data_t native_thread_data;
9912 void *blocking_region_buffer;
9915 VALUE pending_interrupt_queue;
9916 VALUE pending_interrupt_mask_stack;
9917 rb_nativethread_lock_t interrupt_lock;
9918 struct rb_unblock_callback unblock;
9919 VALUE locking_mutex;
9920 struct rb_mutex_struct *keeping_mutexes;
9921 struct rb_waiting_list *join_list;
9929 VALUE (*func)(void *);
9933 enum thread_invoke_type {
9934 thread_invoke_type_none = 0,
9935 thread_invoke_type_proc,
9936 thread_invoke_type_ractor_proc,
9937 thread_invoke_type_func
9939 VALUE stat_insn_usage;
9940 rb_fiber_t *root_fiber;
9944 struct rb_ext_config ext_config;
9948 VM_DEFINECLASS_TYPE_CLASS = 0x00,
9949 VM_DEFINECLASS_TYPE_SINGLETON_CLASS = 0x01,
9950 VM_DEFINECLASS_TYPE_MODULE = 0x02,
9951 VM_DEFINECLASS_TYPE_MASK = 0x07
9952} rb_vm_defineclass_type_t;
9955rb_iseq_t *rb_iseq_new (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent, enum iseq_type);
9956rb_iseq_t *rb_iseq_new_top (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent);
9957rb_iseq_t *rb_iseq_new_main (const rb_ast_body_t *ast, VALUE path, VALUE realpath, const rb_iseq_t *parent, int opt);
9958rb_iseq_t *rb_iseq_new_eval (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, VALUE first_lineno, const rb_iseq_t *parent, int isolated_depth);
9959rb_iseq_t *rb_iseq_new_with_opt(const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, VALUE first_lineno, const rb_iseq_t *parent, int isolated_depth,
9960 enum iseq_type, const rb_compile_option_t*);
9961struct iseq_link_anchor;
9962struct rb_iseq_new_with_callback_callback_func {
9965 void (*func)(rb_iseq_t *, struct iseq_link_anchor *, const void *);
9968static inline struct rb_iseq_new_with_callback_callback_func *
9969rb_iseq_new_with_callback_new_callback(
9970 void (*func)(rb_iseq_t *, struct iseq_link_anchor *, const void *), const void *ptr)
9972 VALUE memo = rb_imemo_new(imemo_ifunc, (VALUE)func, (VALUE)ptr, ((VALUE)RUBY_Qundef), ((VALUE)RUBY_Qfalse));
9973 return (struct rb_iseq_new_with_callback_callback_func *)memo;
9975rb_iseq_t *rb_iseq_new_with_callback(const struct rb_iseq_new_with_callback_callback_func * ifunc,
9976 VALUE name, VALUE path, VALUE realpath, VALUE first_lineno,
9977 const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t*);
9978VALUE rb_iseq_disasm(const rb_iseq_t *iseq);
9979int rb_iseq_disasm_insn(VALUE str, const VALUE *iseqval, size_t pos, const rb_iseq_t *iseq, VALUE child);
9980VALUE rb_iseq_coverage(const rb_iseq_t *iseq);
9981extern VALUE rb_cISeq;
9982extern VALUE rb_cRubyVM;
9983extern VALUE rb_mRubyVMFrozenCore;
9984extern VALUE rb_block_param_proxy;
9988 const struct rb_block block;
9989 unsigned int is_from_method: 1;
9990 unsigned int is_lambda: 1;
9991 unsigned int is_isolated: 1;
9995VALUE rb_proc_isolate(VALUE self);
9996VALUE rb_proc_isolate_bang(VALUE self);
9997VALUE rb_proc_ractor_make_shareable(VALUE self);
10005 unsigned int env_size;
10007extern const rb_data_type_t ruby_binding_data_type;
10009 const struct rb_block block;
10010 const VALUE pathobj;
10011 unsigned short first_lineno;
10013enum vm_check_match_type {
10014 VM_CHECKMATCH_TYPE_WHEN = 1,
10015 VM_CHECKMATCH_TYPE_CASE = 2,
10016 VM_CHECKMATCH_TYPE_RESCUE = 3
10018enum vm_special_object_type {
10019 VM_SPECIAL_OBJECT_VMCORE = 1,
10020 VM_SPECIAL_OBJECT_CBASE,
10021 VM_SPECIAL_OBJECT_CONST_BASE
10023enum vm_svar_index {
10024 VM_SVAR_LASTLINE = 0,
10025 VM_SVAR_BACKREF = 1,
10026 VM_SVAR_EXTRA_START = 2,
10027 VM_SVAR_FLIPFLOP_START = 2
10029typedef struct iseq_inline_constant_cache *IC;
10030typedef struct iseq_inline_iv_cache_entry *IVC;
10031typedef struct iseq_inline_cvar_cache_entry *ICVARC;
10032typedef union iseq_inline_storage_entry *ISE;
10033typedef const struct rb_callinfo *CALL_INFO;
10034typedef const struct rb_callcache *CALL_CACHE;
10035typedef struct rb_call_data *CALL_DATA;
10036typedef VALUE CDHASH;
10037typedef rb_control_frame_t *
10038 (*rb_insn_func_t)(rb_execution_context_t *, rb_control_frame_t *);
10040 VM_FRAME_MAGIC_METHOD = 0x11110001,
10041 VM_FRAME_MAGIC_BLOCK = 0x22220001,
10042 VM_FRAME_MAGIC_CLASS = 0x33330001,
10043 VM_FRAME_MAGIC_TOP = 0x44440001,
10044 VM_FRAME_MAGIC_CFUNC = 0x55550001,
10045 VM_FRAME_MAGIC_IFUNC = 0x66660001,
10046 VM_FRAME_MAGIC_EVAL = 0x77770001,
10047 VM_FRAME_MAGIC_RESCUE = 0x78880001,
10048 VM_FRAME_MAGIC_DUMMY = 0x79990001,
10049 VM_FRAME_MAGIC_MASK = 0x7fff0001,
10050 VM_FRAME_FLAG_FINISH = 0x0020,
10051 VM_FRAME_FLAG_BMETHOD = 0x0040,
10052 VM_FRAME_FLAG_CFRAME = 0x0080,
10053 VM_FRAME_FLAG_LAMBDA = 0x0100,
10054 VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM = 0x0200,
10055 VM_FRAME_FLAG_CFRAME_KW = 0x0400,
10056 VM_FRAME_FLAG_PASSED = 0x0800,
10057 VM_ENV_FLAG_LOCAL = 0x0002,
10058 VM_ENV_FLAG_ESCAPED = 0x0004,
10059 VM_ENV_FLAG_WB_REQUIRED = 0x0008,
10060 VM_ENV_FLAG_ISOLATED = 0x0010,
10062static inline void VM_FORCE_WRITE_SPECIAL_CONST(const VALUE *ptr, VALUE special_const_value);
10064VM_ENV_FLAGS_SET(const VALUE *ep, VALUE flag)
10066 VALUE flags = ep[( 0)];
10068 VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags | flag);
10071VM_ENV_FLAGS_UNSET(const VALUE *ep, VALUE flag)
10073 VALUE flags = ep[( 0)];
10075 VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags & ~flag);
10077static inline unsigned long
10078VM_ENV_FLAGS(const VALUE *ep, long flag)
10080 VALUE flags = ep[( 0)];
10082 return flags & flag;
10084static inline unsigned long
10085VM_FRAME_TYPE(const rb_control_frame_t *cfp)
10087 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_MAGIC_MASK);
10090VM_FRAME_LAMBDA_P(const rb_control_frame_t *cfp)
10092 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_LAMBDA) != 0;
10095VM_FRAME_CFRAME_KW_P(const rb_control_frame_t *cfp)
10097 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME_KW) != 0;
10100VM_FRAME_FINISHED_P(const rb_control_frame_t *cfp)
10102 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_FINISH) != 0;
10105VM_FRAME_BMETHOD_P(const rb_control_frame_t *cfp)
10107 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_BMETHOD) != 0;
10110rb_obj_is_iseq(VALUE iseq)
10112 return imemo_type_p(iseq, imemo_iseq);
10115VM_FRAME_CFRAME_P(const rb_control_frame_t *cfp)
10117 int cframe_p = VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME) != 0;
10122VM_FRAME_RUBYFRAME_P(const rb_control_frame_t *cfp)
10124 return !VM_FRAME_CFRAME_P(cfp);
10127VM_ENV_LOCAL_P(const VALUE *ep)
10129 return VM_ENV_FLAGS(ep, VM_ENV_FLAG_LOCAL) ? 1 : 0;
10131static inline const VALUE *
10132VM_ENV_PREV_EP(const VALUE *ep)
10135 return ((void *)(((ep[(-1)])) & ~0x03));
10138VM_ENV_BLOCK_HANDLER(const VALUE *ep)
10144VM_ENV_ESCAPED_P(const VALUE *ep)
10147 return VM_ENV_FLAGS(ep, VM_ENV_FLAG_ESCAPED) ? 1 : 0;
10149__attribute__((__nonnull__ (1)))
10151VM_ENV_ENVVAL(const VALUE *ep)
10153 VALUE envval = ep[( 1)];
10158__attribute__((__nonnull__ (1)))
10159static inline const rb_env_t *
10160VM_ENV_ENVVAL_PTR(const VALUE *ep)
10162 return (const rb_env_t *)VM_ENV_ENVVAL(ep);
10164static inline const rb_env_t *
10165vm_env_new(VALUE *env_ep, VALUE *env_body, unsigned int env_size, const rb_iseq_t *iseq)
10167 rb_env_t *env = (rb_env_t *)rb_imemo_new(imemo_env, (VALUE)env_ep, (VALUE)env_body, 0, (VALUE)iseq);
10168 env->env_size = env_size;
10169 env_ep[( 1)] = (VALUE)env;
10173VM_FORCE_WRITE(const VALUE *ptr, VALUE v)
10175 *((VALUE *)ptr) = v;
10178VM_FORCE_WRITE_SPECIAL_CONST(const VALUE *ptr, VALUE special_const_value)
10181 VM_FORCE_WRITE(ptr, special_const_value);
10184VM_STACK_ENV_WRITE(const VALUE *ep, int index, VALUE v)
10187 VM_FORCE_WRITE(&ep[index], v);
10189const VALUE *rb_vm_ep_local_ep(const VALUE *ep);
10190const VALUE *rb_vm_proc_local_ep(VALUE proc);static inline
10191void rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep);
10192void rb_vm_block_copy(VALUE obj, const struct rb_block *dst, const struct rb_block *src);static inline
10193VALUE rb_vm_frame_block_handler(const rb_control_frame_t *cfp);
10194static inline const rb_control_frame_t *
10195RUBY_VM_END_CONTROL_FRAME(const rb_execution_context_t *ec)
10197 return (rb_control_frame_t *)(ec->vm_stack + ec->vm_stack_size);
10200RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
10202 return !((void *)(RUBY_VM_END_CONTROL_FRAME(ec)) > (void *)(cfp));
10205VM_BH_ISEQ_BLOCK_P(VALUE block_handler)
10207 if ((block_handler & 0x03) == 0x01) {
10215VM_BH_FROM_ISEQ_BLOCK(const struct rb_captured_block *captured)
10217 VALUE block_handler = ((VALUE)(captured) | (0x01));
10219 return block_handler;
10221static inline const struct rb_captured_block *
10222VM_BH_TO_ISEQ_BLOCK(VALUE block_handler)
10224 struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
10229VM_BH_IFUNC_P(VALUE block_handler)
10231 if ((block_handler & 0x03) == 0x03) {
10239VM_BH_FROM_IFUNC_BLOCK(const struct rb_captured_block *captured)
10241 VALUE block_handler = ((VALUE)(captured) | (0x03));
10243 return block_handler;
10245static inline const struct rb_captured_block *
10246VM_BH_TO_IFUNC_BLOCK(VALUE block_handler)
10248 struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
10252static inline const struct rb_captured_block *
10253VM_BH_TO_CAPT_BLOCK(VALUE block_handler)
10255 struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
10259static inline enum rb_block_handler_type
10260vm_block_handler_type(VALUE block_handler)
10262 if (VM_BH_ISEQ_BLOCK_P(block_handler)) {
10263 return block_handler_type_iseq;
10265 else if (VM_BH_IFUNC_P(block_handler)) {
10266 return block_handler_type_ifunc;
10268 else if (RB_SYMBOL_P(block_handler)) {
10269 return block_handler_type_symbol;
10273 return block_handler_type_proc;
10277vm_block_handler_verify(__attribute__ ((__unused__)) VALUE block_handler)
10282vm_cfp_forwarded_bh_p(const rb_control_frame_t *cfp, VALUE block_handler)
10284 return ((VALUE) cfp->block_code) == block_handler;
10286static inline enum rb_block_type
10287vm_block_type(const struct rb_block *block)
10289 return block->type;
10292vm_block_type_set(const struct rb_block *block, enum rb_block_type type)
10294 struct rb_block *mb = (struct rb_block *)block;
10297static inline const struct rb_block *
10298vm_proc_block(VALUE procval)
10301 return &((rb_proc_t *)(((struct RTypedData *)(procval))->data))->block;
10303static inline const rb_iseq_t *vm_block_iseq(const struct rb_block *block);
10304static inline const VALUE *vm_block_ep(const struct rb_block *block);
10305static inline const rb_iseq_t *
10306vm_proc_iseq(VALUE procval)
10308 return vm_block_iseq(vm_proc_block(procval));
10310static inline const VALUE *
10311vm_proc_ep(VALUE procval)
10313 return vm_block_ep(vm_proc_block(procval));
10315static inline const rb_iseq_t *
10316vm_block_iseq(const struct rb_block *block)
10318 switch (vm_block_type(block)) {
10319 case block_type_iseq: return rb_iseq_check(block->as.captured.code.iseq);
10320 case block_type_proc: return vm_proc_iseq(block->as.proc);
10321 case block_type_ifunc:
10322 case block_type_symbol: return ((void *)0);
10324 __builtin_unreachable();
10325 return ((void *)0);
10327static inline const VALUE *
10328vm_block_ep(const struct rb_block *block)
10330 switch (vm_block_type(block)) {
10331 case block_type_iseq:
10332 case block_type_ifunc: return block->as.captured.ep;
10333 case block_type_proc: return vm_proc_ep(block->as.proc);
10334 case block_type_symbol: return ((void *)0);
10336 __builtin_unreachable();
10337 return ((void *)0);
10340vm_block_self(const struct rb_block *block)
10342 switch (vm_block_type(block)) {
10343 case block_type_iseq:
10344 case block_type_ifunc:
10345 return block->as.captured.self;
10346 case block_type_proc:
10347 return vm_block_self(vm_proc_block(block->as.proc));
10348 case block_type_symbol:
10349 return ((VALUE)RUBY_Qundef);
10351 __builtin_unreachable();
10352 return ((VALUE)RUBY_Qundef);
10355VM_BH_TO_SYMBOL(VALUE block_handler)
10358 return block_handler;
10361VM_BH_FROM_SYMBOL(VALUE symbol)
10367VM_BH_TO_PROC(VALUE block_handler)
10370 return block_handler;
10373VM_BH_FROM_PROC(VALUE procval)
10378VALUE rb_thread_alloc(VALUE klass);
10379VALUE rb_binding_alloc(VALUE klass);
10380VALUE rb_proc_alloc(VALUE klass);
10381VALUE rb_proc_dup(VALUE self);
10382extern void rb_vmdebug_stack_dump_raw(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
10383extern void rb_vmdebug_debug_print_pre(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE *_pc);
10384extern void rb_vmdebug_debug_print_post(const rb_execution_context_t *ec, const rb_control_frame_t *cfp
10386void rb_vm_bugreport(const void *);
10387typedef void (*ruby_sighandler_t)(int);
10388__attribute__((__format__(__printf__, 4, 5)))
10389__attribute__((__noreturn__)) void rb_bug_for_fatal_signal(ruby_sighandler_t default_sighandler, int sig, const void *, const char *fmt, ...);
10392VALUE rb_iseq_eval(const rb_iseq_t *iseq);
10393VALUE rb_iseq_eval_main(const rb_iseq_t *iseq);
10394VALUE rb_iseq_path(const rb_iseq_t *iseq);
10395VALUE rb_iseq_realpath(const rb_iseq_t *iseq);
10398VALUE rb_iseq_pathobj_new(VALUE path, VALUE realpath);
10399void rb_iseq_pathobj_set(const rb_iseq_t *iseq, VALUE path, VALUE realpath);
10400int rb_ec_frame_method_id_and_class(const rb_execution_context_t *ec, ID *idp, ID *called_idp, VALUE *klassp);
10401void rb_ec_setup_exception(const rb_execution_context_t *ec, VALUE mesg, VALUE cause);
10402VALUE rb_vm_invoke_proc(rb_execution_context_t *ec, rb_proc_t *proc, int argc, const VALUE *argv, int kw_splat, VALUE block_handler);
10403VALUE rb_vm_make_proc_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass, int8_t is_lambda);
10405rb_vm_make_proc(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass)
10407 return rb_vm_make_proc_lambda(ec, captured, klass, 0);
10410rb_vm_make_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass)
10412 return rb_vm_make_proc_lambda(ec, captured, klass, 1);
10414VALUE rb_vm_make_binding(const rb_execution_context_t *ec, const rb_control_frame_t *src_cfp);
10415VALUE rb_vm_env_local_variables(const rb_env_t *env);
10416const rb_env_t *rb_vm_env_prev_env(const rb_env_t *env);
10417const VALUE *rb_binding_add_dynavars(VALUE bindval, rb_binding_t *bind, int dyncount, const ID *dynvars);
10418void rb_vm_inc_const_missing_count(void);
10419VALUE rb_vm_call_kw(rb_execution_context_t *ec, VALUE recv, VALUE id, int argc,
10420 const VALUE *argv, const rb_callable_method_entry_t *me, int kw_splat);
10421static void rb_vm_pop_frame(rb_execution_context_t *ec);
10422void rb_gvl_destroy(rb_global_vm_lock_t *gvl);
10423void rb_thread_start_timer_thread(void);
10424void rb_thread_stop_timer_thread(void);
10425void rb_thread_reset_timer_thread(void);
10426void rb_thread_wakeup_timer_thread(int);
10428rb_vm_living_threads_init(rb_vm_t *vm)
10430 list_head_init(&vm->waiting_fds);
10431 list_head_init(&vm->waiting_pids);
10432 list_head_init(&vm->workqueue);
10433 list_head_init(&vm->waiting_grps);
10434 list_head_init(&vm->ractor.set);
10436typedef int rb_backtrace_iter_func(void *, VALUE, int, VALUE);
10437rb_control_frame_t *rb_vm_get_ruby_level_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
10438rb_control_frame_t *rb_vm_get_binding_creatable_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
10439int rb_vm_get_sourceline(const rb_control_frame_t *);
10440void rb_vm_stack_to_heap(rb_execution_context_t *ec);
10441void ruby_thread_init_stack(rb_thread_t *th);
10442rb_thread_t * ruby_thread_from_native(void);
10443int ruby_thread_set_native(rb_thread_t *th);
10444int rb_vm_control_frame_id_and_class(const rb_control_frame_t *cfp, ID *idp, ID *called_idp, VALUE *klassp);
10445void rb_vm_rewind_cfp(rb_execution_context_t *ec, rb_control_frame_t *cfp);
10446static VALUE rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler);
10447void rb_vm_register_special_exception_str(enum ruby_special_exceptions sp, VALUE exception_class, VALUE mesg);
10448void rb_gc_mark_machine_stack(const rb_execution_context_t *ec);static inline
10449void rb_vm_rewrite_cref(rb_cref_t *node, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr);
10450static const rb_callable_method_entry_t *rb_vm_frame_method_entry(const rb_control_frame_t *cfp);
10451VALUE rb_catch_protect(VALUE t, rb_block_call_func *func, VALUE data, enum ruby_tag_type *stateptr);
10452rb_execution_context_t *rb_vm_main_ractor_ec(rb_vm_t *vm);
10455extern struct rb_ractor_struct *ruby_single_main_ractor;
10456extern rb_vm_t *ruby_current_vm_ptr;
10457extern rb_event_flag_t ruby_vm_event_flags;
10458extern rb_event_flag_t ruby_vm_event_enabled_global_flags;
10459extern unsigned int ruby_vm_event_local_num;
10462static inline rb_thread_t *
10463rb_ec_thread_ptr(const rb_execution_context_t *ec)
10465 return ec->thread_ptr;
10467static inline rb_ractor_t *
10468rb_ec_ractor_ptr(const rb_execution_context_t *ec)
10470 const rb_thread_t *th = rb_ec_thread_ptr(ec);
10476 return ((void *)0);
10479static inline rb_vm_t *
10480rb_ec_vm_ptr(const rb_execution_context_t *ec)
10482 const rb_thread_t *th = rb_ec_thread_ptr(ec);
10487 return ((void *)0);
10490static inline rb_execution_context_t *
10491rb_current_execution_context(_Bool expect_ec)
10493 rb_execution_context_t *ec = ruby_current_ec;
10497static inline rb_thread_t *
10498rb_current_thread(void)
10500 const rb_execution_context_t *ec = rb_current_execution_context(1);
10501 return rb_ec_thread_ptr(ec);
10503static inline rb_ractor_t *
10504rb_current_ractor(void)
10506 if (ruby_single_main_ractor) {
10507 return ruby_single_main_ractor;
10510 const rb_execution_context_t *ec = rb_current_execution_context(1);
10511 return rb_ec_ractor_ptr(ec);
10514static inline rb_vm_t *
10517 return ruby_current_vm_ptr;
10519void rb_ec_vm_lock_rec_release(const rb_execution_context_t *ec,
10520 unsigned int recorded_lock_rec,
10521 unsigned int current_lock_rec);
10522static inline unsigned int
10523rb_ec_vm_lock_rec(const rb_execution_context_t *ec)
10525 rb_vm_t *vm = rb_ec_vm_ptr(ec);
10526 if (vm->ractor.sync.lock_owner != rb_ec_ractor_ptr(ec)) {
10530 return vm->ractor.sync.lock_rec;
10534 TIMER_INTERRUPT_MASK = 0x01,
10535 PENDING_INTERRUPT_MASK = 0x02,
10536 POSTPONED_JOB_INTERRUPT_MASK = 0x04,
10537 TRAP_INTERRUPT_MASK = 0x08,
10538 TERMINATE_INTERRUPT_MASK = 0x10,
10539 VM_BARRIER_INTERRUPT_MASK = 0x20,
10542RUBY_VM_INTERRUPTED_ANY(rb_execution_context_t *ec)
10544 return ec->interrupt_flag & ~(ec)->interrupt_mask;
10546VALUE rb_exc_set_backtrace(VALUE exc, VALUE bt);
10547int rb_signal_buff_size(void);
10548int rb_signal_exec(rb_thread_t *th, int sig);
10549void rb_threadptr_check_signal(rb_thread_t *mth);
10550void rb_threadptr_signal_raise(rb_thread_t *th, int sig);
10551void rb_threadptr_signal_exit(rb_thread_t *th);
10552int rb_threadptr_execute_interrupts(rb_thread_t *, int);
10553void rb_threadptr_interrupt(rb_thread_t *th);
10554void rb_threadptr_unlock_all_locking_mutexes(rb_thread_t *th);
10555void rb_threadptr_pending_interrupt_clear(rb_thread_t *th);
10556void rb_threadptr_pending_interrupt_enque(rb_thread_t *th, VALUE v);
10557VALUE rb_ec_get_errinfo(const rb_execution_context_t *ec);
10558void rb_ec_error_print(rb_execution_context_t * volatile ec, volatile VALUE errinfo);
10559void rb_execution_context_update(const rb_execution_context_t *ec);
10560void rb_execution_context_mark(const rb_execution_context_t *ec);
10561void rb_fiber_close(rb_fiber_t *fib);
10562void Init_native_thread(rb_thread_t *th);
10563int rb_vm_check_ints_blocking(rb_execution_context_t *ec);
10564void rb_vm_cond_wait(rb_vm_t *vm, rb_nativethread_cond_t *cond);
10565void rb_vm_cond_timedwait(rb_vm_t *vm, rb_nativethread_cond_t *cond, unsigned long msec);
10567rb_vm_check_ints(rb_execution_context_t *ec)
10570 if ((__builtin_expect(!!(RUBY_VM_INTERRUPTED_ANY(ec)), 0))) {
10571 rb_threadptr_execute_interrupts(rb_ec_thread_ptr(ec), 0);
10574struct rb_trace_arg_struct {
10575 rb_event_flag_t event;
10576 rb_execution_context_t *ec;
10577 const rb_control_frame_t *cfp;
10587void rb_hook_list_mark(rb_hook_list_t *hooks);
10588void rb_hook_list_free(rb_hook_list_t *hooks);
10589void rb_hook_list_connect_tracepoint(VALUE target, rb_hook_list_t *list, VALUE tpval, unsigned int target_line);
10590void rb_hook_list_remove_tracepoint(rb_hook_list_t *list, VALUE tpval);
10591void rb_exec_event_hooks(struct rb_trace_arg_struct *trace_arg, rb_hook_list_t *hooks, int pop_p);
10593rb_exec_event_hook_orig(rb_execution_context_t *ec, rb_hook_list_t *hooks, rb_event_flag_t flag,
10594 VALUE self, ID id, ID called_id, VALUE klass, VALUE data, int pop_p)
10596 struct rb_trace_arg_struct trace_arg;
10598 trace_arg.event = flag;
10600 trace_arg.cfp = ec->cfp;
10601 trace_arg.self = self;
10603 trace_arg.called_id = called_id;
10604 trace_arg.klass = klass;
10605 trace_arg.data = data;
10606 trace_arg.path = ((VALUE)RUBY_Qundef);
10607 trace_arg.klass_solved = 0;
10608 rb_exec_event_hooks(&trace_arg, hooks, pop_p);
10610struct rb_ractor_pub {
10613 rb_hook_list_t hooks;
10615static inline rb_hook_list_t *
10616rb_ec_ractor_hooks(const rb_execution_context_t *ec)
10618 struct rb_ractor_pub *cr_pub = (struct rb_ractor_pub *)rb_ec_ractor_ptr(ec);
10619 return &cr_pub->hooks;
10622rb_exec_event_hook_script_compiled(rb_execution_context_t *ec, const rb_iseq_t *iseq, VALUE eval_script)
10624 do { const rb_event_flag_t flag_arg_ = (0x2000); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, ec->cfp->self, 0, 0, 0, RB_NIL_P(eval_script) ? (VALUE)iseq : __extension__ ({ const VALUE args_to_new_ary[] = {eval_script, (VALUE)iseq}; if (__builtin_constant_p(2)) { __extension__ _Static_assert(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))) == (2), "rb_ary_new_from_args" ": " "numberof(args_to_new_ary) == (2)"); } rb_ary_new_from_values(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))), args_to_new_ary); }), 0); } } while (0);
10626void rb_vm_trap_exit(rb_vm_t *vm);
10629int rb_thread_check_trap_pending(void);
10630extern VALUE rb_get_coverages(void);
10631extern void rb_set_coverages(VALUE, int, VALUE);
10632extern void rb_clear_coverages(void);
10633extern void rb_reset_coverages(void);
10634extern void rb_resume_coverages(void);
10635extern void rb_suspend_coverages(void);
10636void rb_postponed_job_flush(rb_vm_t *vm);
10637extern VALUE rb_eRactorUnsafeError;
10638extern VALUE rb_eRactorIsolationError;
10642vm_passed_block_handler_set(rb_execution_context_t *ec, VALUE block_handler)
10644 vm_block_handler_verify(block_handler);
10645 ec->passed_block_handler = block_handler;
10648pass_passed_block_handler(rb_execution_context_t *ec)
10650 VALUE block_handler = rb_vm_frame_block_handler(ec->cfp);
10651 vm_passed_block_handler_set(ec, block_handler);
10652 VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_PASSED);
10655extern int *__errno_location (void) __attribute__ ((__nothrow__ , __leaf__)) __attribute__ ((__const__));
10656extern char *program_invocation_name;
10657extern char *program_invocation_short_name;
10658typedef int error_t;
10661rb_ec_vm_lock_rec_check(const rb_execution_context_t *ec, unsigned int recorded_lock_rec)
10663 unsigned int current_lock_rec = rb_ec_vm_lock_rec(ec);
10664 if (current_lock_rec != recorded_lock_rec) {
10665 rb_ec_vm_lock_rec_release(ec, recorded_lock_rec, current_lock_rec);
10669rb_ec_tag_state(const rb_execution_context_t *ec)
10671 struct rb_vm_tag *tag = ec->tag;
10672 enum ruby_tag_type state = tag->state;
10673 tag->state = RUBY_TAG_NONE;
10674 rb_ec_vm_lock_rec_check(ec, tag->lock_rec);
10677__attribute__((__noreturn__)) static inline void rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st);
10679rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st)
10681 ec->tag->state = st;
10682 __builtin_longjmp(((ec->tag->buf)),(1));
10684static inline int CREF_SINGLETON(const rb_cref_t *cref);
10686CREF_CLASS(const rb_cref_t *cref)
10688 if (CREF_SINGLETON(cref)) {
10689 return rb_class_of(cref->klass_or_self);
10692 return cref->klass_or_self;
10696CREF_CLASS_FOR_DEFINITION(const rb_cref_t *cref)
10698 if (CREF_SINGLETON(cref)) {
10699 return rb_singleton_class(cref->klass_or_self);
10702 return cref->klass_or_self;
10705static inline rb_cref_t *
10706CREF_NEXT(const rb_cref_t *cref)
10710static inline const rb_scope_visibility_t *
10711CREF_SCOPE_VISI(const rb_cref_t *cref)
10713 return &cref->scope_visi;
10716CREF_REFINEMENTS(const rb_cref_t *cref)
10718 return cref->refinements;
10721CREF_REFINEMENTS_SET(rb_cref_t *cref, VALUE refs)
10723 rb_obj_write((VALUE)(cref), __extension__({
10725 ; __typeof__((VALUE *)(&cref->refinements)) unaligned_member_access_result = ((VALUE *)(&cref->refinements));
10726 ; unaligned_member_access_result; }), (VALUE)(refs), "./eval_intern.h", 223);
10729CREF_PUSHED_BY_EVAL(const rb_cref_t *cref)
10731 return cref->flags & ((VALUE)RUBY_FL_USER5);
10734CREF_PUSHED_BY_EVAL_SET(rb_cref_t *cref)
10736 cref->flags |= ((VALUE)RUBY_FL_USER5);
10739CREF_SINGLETON(const rb_cref_t *cref)
10741 return cref->flags & ((VALUE)RUBY_FL_USER7);
10744CREF_SINGLETON_SET(rb_cref_t *cref)
10746 cref->flags |= ((VALUE)RUBY_FL_USER7);
10749CREF_OMOD_SHARED(const rb_cref_t *cref)
10751 return cref->flags & ((VALUE)RUBY_FL_USER6);
10754CREF_OMOD_SHARED_SET(rb_cref_t *cref)
10756 cref->flags |= ((VALUE)RUBY_FL_USER6);
10759CREF_OMOD_SHARED_UNSET(rb_cref_t *cref)
10761 cref->flags &= ~((VALUE)RUBY_FL_USER6);
10764 RAISED_EXCEPTION = 1,
10765 RAISED_STACKOVERFLOW = 2,
10766 RAISED_NOMEMORY = 4
10768int rb_ec_set_raised(rb_execution_context_t *ec);
10769int rb_ec_reset_raised(rb_execution_context_t *ec);
10770int rb_ec_stack_check(rb_execution_context_t *ec);
10771VALUE rb_f_eval(int argc, const VALUE *argv, VALUE self);
10772VALUE rb_make_exception(int argc, const VALUE *argv);
10773__attribute__((__noreturn__)) void rb_method_name_error(VALUE, VALUE);
10774__attribute__((__noreturn__)) void rb_fiber_start(rb_fiber_t*);
10775__attribute__((__noreturn__)) void rb_print_undef(VALUE, ID, rb_method_visibility_t);
10776__attribute__((__noreturn__)) void rb_print_undef_str(VALUE, VALUE);
10777__attribute__((__noreturn__)) void rb_print_inaccessible(VALUE, ID, rb_method_visibility_t);
10778__attribute__((__noreturn__)) void rb_vm_localjump_error(const char *,VALUE, int);
10779__attribute__((__noreturn__)) void rb_vm_jump_tag_but_local_jump(int);
10780VALUE rb_vm_make_jump_tag_but_local_jump(int state, VALUE val);
10781rb_cref_t *rb_vm_cref(void);
10782rb_cref_t *rb_vm_cref_replace_with_duplicated_cref(void);
10783VALUE rb_vm_call_cfunc(VALUE recv, VALUE (*func)(VALUE), VALUE arg, VALUE block_handler, VALUE filename);
10784void rb_vm_set_progname(VALUE filename);
10785VALUE rb_vm_cbase(void);
10786VALUE rb_ec_backtrace_object(const rb_execution_context_t *ec);
10787VALUE rb_ec_backtrace_str_ary(const rb_execution_context_t *ec, long lev, long n);
10788VALUE rb_ec_backtrace_location_ary(const rb_execution_context_t *ec, long lev, long n, _Bool skip_internal);
10789static inline char *
10790rb_char_next(const char *p)
10793 int len = mblen(p, 0x7fffffff);
10794 p += len > 0 ? len : 1;
10798const char *rb_obj_info(VALUE obj);
10799const char *rb_raw_obj_info(char *buff, const int buff_size, VALUE obj);
10800VALUE rb_gc_disable_no_rest(void);
10801struct rb_thread_struct;
10804size_t rb_objspace_data_type_memsize(VALUE obj);
10805void rb_objspace_reachable_objects_from(VALUE obj, void (func)(VALUE, void *), void *data);
10806void rb_objspace_reachable_objects_from_root(void (func)(const char *category, VALUE, void *), void *data);
10807int rb_objspace_markable_object_p(VALUE obj);
10808int rb_objspace_internal_object_p(VALUE obj);
10809int rb_objspace_marked_object_p(VALUE obj);
10810void rb_objspace_each_objects(
10811 int (*callback)(void *start, void *end, size_t stride, void *data),
10813void rb_objspace_each_objects_without_setup(
10814 int (*callback)(void *, void *, size_t, void *),
10818struct rb_iseq_struct;
10819int rb_dvar_defined(ID, const struct rb_iseq_struct *);
10820int rb_local_defined(ID, const struct rb_iseq_struct *);
10821const char *rb_insns_name(int i);
10822VALUE rb_insns_name_array(void);
10823int rb_iseq_cdhash_cmp(VALUE val, VALUE lit);
10824st_index_t rb_iseq_cdhash_hash(VALUE a);
10825int rb_vm_insn_addr2insn(const void *);
10826int rb_vm_insn_decode(const VALUE encoded);
10827extern _Bool ruby_vm_keep_script_lines;
10830rb_event_flag_t rb_iseq_event_flags(const struct rb_iseq_struct *iseq, size_t pos);
10833struct rb_thread_struct;
10834struct rb_fiber_struct;
10835void rb_fiber_reset_root_local_storage(struct rb_thread_struct *);
10836void ruby_register_rollback_func_for_ensure(VALUE (*ensure_func)(VALUE), VALUE (*rollback_func)(VALUE));
10837void rb_fiber_init_mjit_cont(struct rb_fiber_struct *fiber);
10838VALUE rb_fiberptr_self(struct rb_fiber_struct *fiber);
10839unsigned int rb_fiberptr_blocking(struct rb_fiber_struct *fiber);
10842enum ruby_coderange_type {
10843 RUBY_ENC_CODERANGE_UNKNOWN = 0,
10844 RUBY_ENC_CODERANGE_7BIT = ((int)RUBY_FL_USER8),
10845 RUBY_ENC_CODERANGE_VALID = ((int)RUBY_FL_USER9),
10846 RUBY_ENC_CODERANGE_BROKEN = ((int)(RUBY_FL_USER8|RUBY_FL_USER9)),
10847 RUBY_ENC_CODERANGE_MASK = (RUBY_ENC_CODERANGE_7BIT|
10848 RUBY_ENC_CODERANGE_VALID|
10849 RUBY_ENC_CODERANGE_BROKEN)
10851__attribute__((__const__))
10853rb_enc_coderange_clean_p(int cr)
10855 return (cr ^ (cr >> 1)) & RUBY_ENC_CODERANGE_7BIT;
10857__attribute__((__const__))
10859RB_ENC_CODERANGE_CLEAN_P(enum ruby_coderange_type cr)
10861 return rb_enc_coderange_clean_p(cr);
10863__attribute__((__pure__))
10864static inline enum ruby_coderange_type
10865RB_ENC_CODERANGE(VALUE obj)
10867 VALUE ret = RB_FL_TEST_RAW(obj, RUBY_ENC_CODERANGE_MASK);
10868 return ((enum ruby_coderange_type)ret);
10870__attribute__((__pure__))
10872RB_ENC_CODERANGE_ASCIIONLY(VALUE obj)
10874 return RB_ENC_CODERANGE(obj) == RUBY_ENC_CODERANGE_7BIT;
10877RB_ENC_CODERANGE_SET(VALUE obj, enum ruby_coderange_type cr)
10879 RB_FL_UNSET_RAW(obj, RUBY_ENC_CODERANGE_MASK);
10880 RB_FL_SET_RAW(obj, cr);
10883RB_ENC_CODERANGE_CLEAR(VALUE obj)
10885 RB_FL_UNSET_RAW(obj, RUBY_ENC_CODERANGE_MASK);
10887__attribute__((__const__))
10888static inline enum ruby_coderange_type
10889RB_ENC_CODERANGE_AND(enum ruby_coderange_type a, enum ruby_coderange_type b)
10891 if (a == RUBY_ENC_CODERANGE_7BIT) {
10894 else if (a != RUBY_ENC_CODERANGE_VALID) {
10895 return RUBY_ENC_CODERANGE_UNKNOWN;
10897 else if (b == RUBY_ENC_CODERANGE_7BIT) {
10898 return RUBY_ENC_CODERANGE_VALID;
10908typedef unsigned char OnigUChar;
10909typedef unsigned int OnigCodePoint;
10910typedef unsigned int OnigCtype;
10911typedef size_t OnigDistance;
10912typedef ptrdiff_t OnigPosition;
10913typedef unsigned int OnigCaseFoldType;
10914extern OnigCaseFoldType OnigDefaultCaseFoldFlag;
10918 OnigCodePoint code[3];
10919} OnigCaseFoldCodeItem;
10922 OnigCodePoint anychar;
10923 OnigCodePoint anytime;
10924 OnigCodePoint zero_or_one_time;
10925 OnigCodePoint one_or_more_time;
10926 OnigCodePoint anychar_anytime;
10927} OnigMetaCharTableType;
10928typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg);
10929typedef struct OnigEncodingTypeST {
10930 int (*precise_mbc_enc_len)(const OnigUChar* p,const OnigUChar* e, const struct OnigEncodingTypeST* enc);
10934 int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
10935 OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
10936 int (*code_to_mbclen)(OnigCodePoint code, const struct OnigEncodingTypeST* enc);
10937 int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf, const struct OnigEncodingTypeST* enc);
10938 int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, const struct OnigEncodingTypeST* enc);
10939 int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, const struct OnigEncodingTypeST* enc);
10940 int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[], const struct OnigEncodingTypeST* enc);
10941 int (*property_name_to_ctype)(const struct OnigEncodingTypeST* enc, const OnigUChar* p, const OnigUChar* end);
10942 int (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype, const struct OnigEncodingTypeST* enc);
10943 int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], const struct OnigEncodingTypeST* enc);
10944 OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
10945 int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end, const struct OnigEncodingTypeST* enc);
10946 int (*case_map)(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc);
10947 int ruby_encoding_index;
10948 unsigned int flags;
10950typedef const OnigEncodingType* OnigEncoding;
10951extern const OnigEncodingType OnigEncodingASCII;
10953int onigenc_ascii_only_case_map(OnigCaseFoldType* flagP, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, OnigUChar* to_end, const struct OnigEncodingTypeST* enc);
10955int onigenc_mbclen_approximate(const OnigUChar* p,const OnigUChar* e, const struct OnigEncodingTypeST* enc);
10957OnigUChar* onigenc_step_back(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, int n);
10959int onigenc_init(void);
10961int onigenc_set_default_encoding(OnigEncoding enc);
10963OnigEncoding onigenc_get_default_encoding(void);
10965OnigUChar* onigenc_get_right_adjust_char_head_with_prev(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, const OnigUChar** prev);
10967OnigUChar* onigenc_get_prev_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
10969OnigUChar* onigenc_get_left_adjust_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
10971OnigUChar* onigenc_get_right_adjust_char_head(OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
10973int onigenc_strlen(OnigEncoding enc, const OnigUChar* p, const OnigUChar* end);
10975int onigenc_strlen_null(OnigEncoding enc, const OnigUChar* p);
10977int onigenc_str_bytelen_null(OnigEncoding enc, const OnigUChar* p);
10978typedef unsigned int OnigOptionType;
10982 unsigned int behavior;
10983 OnigOptionType options;
10984 OnigMetaCharTableType meta_char_table;
10986extern const OnigSyntaxType OnigSyntaxASIS;
10987extern const OnigSyntaxType OnigSyntaxPosixBasic;
10988extern const OnigSyntaxType OnigSyntaxPosixExtended;
10989extern const OnigSyntaxType OnigSyntaxEmacs;
10990extern const OnigSyntaxType OnigSyntaxGrep;
10991extern const OnigSyntaxType OnigSyntaxGnuRegex;
10992extern const OnigSyntaxType OnigSyntaxJava;
10993extern const OnigSyntaxType OnigSyntaxPerl58;
10994extern const OnigSyntaxType OnigSyntaxPerl58_NG;
10995extern const OnigSyntaxType OnigSyntaxPerl;
10996extern const OnigSyntaxType OnigSyntaxRuby;
10997extern const OnigSyntaxType OnigSyntaxPython;
10998extern const OnigSyntaxType* OnigDefaultSyntax;
10999struct re_registers {
11005typedef struct re_registers OnigRegion;
11009 OnigUChar* par_end;
11015typedef void (*OnigWarnFunc)(const char* s);
11016extern void onig_null_warn(const char* s);
11017typedef struct re_pattern_buffer {
11020 unsigned int alloc;
11023 int num_null_check;
11024 int num_comb_exp_check;
11026 unsigned int capture_history;
11027 unsigned int bt_mem_start;
11028 unsigned int bt_mem_end;
11029 int stack_pop_level;
11030 int repeat_range_alloc;
11031 OnigOptionType options;
11032 OnigRepeatRange* repeat_range;
11034 const OnigSyntaxType* syntax;
11036 OnigCaseFoldType case_fold_flag;
11040 OnigDistance anchor_dmin;
11041 OnigDistance anchor_dmax;
11043 unsigned char *exact;
11044 unsigned char *exact_end;
11045 unsigned char map[256];
11047 int *int_map_backward;
11050 struct re_pattern_buffer* chain;
11052typedef OnigRegexType* OnigRegex;
11053typedef OnigRegexType regex_t;
11055 int num_of_elements;
11056 OnigEncoding pattern_enc;
11057 OnigEncoding target_enc;
11058 const OnigSyntaxType* syntax;
11059 OnigOptionType option;
11060 OnigCaseFoldType case_fold_flag;
11063int onig_initialize(OnigEncoding encodings[], int n);
11065int onig_init(void);
11067int onig_error_code_to_str(OnigUChar* s, OnigPosition err_code, ...);
11069void onig_set_warn_func(OnigWarnFunc f);
11071void onig_set_verb_warn_func(OnigWarnFunc f);
11073int onig_new(OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo);
11075int onig_reg_init(OnigRegex reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, const OnigSyntaxType* syntax);
11077int onig_new_without_alloc(OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo);
11079int onig_new_deluxe(OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
11081void onig_free(OnigRegex);
11083void onig_free_body(OnigRegex);
11085OnigPosition onig_scan(OnigRegex reg, const OnigUChar* str, const OnigUChar* end, OnigRegion* region, OnigOptionType option, int (*scan_callback)(OnigPosition, OnigPosition, OnigRegion*, void*), void* callback_arg);
11087OnigPosition onig_search(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
11089OnigPosition onig_search_gpos(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* global_pos, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
11091OnigPosition onig_match(OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option);
11093OnigRegion* onig_region_new(void);
11095void onig_region_init(OnigRegion* region);
11097void onig_region_free(OnigRegion* region, int free_self);
11099void onig_region_copy(OnigRegion* to, const OnigRegion* from);
11101void onig_region_clear(OnigRegion* region);
11103int onig_region_resize(OnigRegion* region, int n);
11105int onig_region_set(OnigRegion* region, int at, int beg, int end);
11107int onig_name_to_group_numbers(OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums);
11109int onig_name_to_backref_number(OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, const OnigRegion *region);
11111int onig_foreach_name(OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg);
11113int onig_number_of_names(const OnigRegexType *reg);
11115int onig_number_of_captures(const OnigRegexType *reg);
11117int onig_number_of_capture_histories(const OnigRegexType *reg);
11119int onig_capture_tree_traverse(OnigRegion* region, int at, int(*callback_func)(int,OnigPosition,OnigPosition,int,int,void*), void* arg);
11121int onig_noname_group_capture_is_active(const OnigRegexType *reg);
11123OnigEncoding onig_get_encoding(const OnigRegexType *reg);
11125OnigOptionType onig_get_options(const OnigRegexType *reg);
11127OnigCaseFoldType onig_get_case_fold_flag(const OnigRegexType *reg);
11129const OnigSyntaxType* onig_get_syntax(const OnigRegexType *reg);
11131int onig_set_default_syntax(const OnigSyntaxType* syntax);
11133void onig_copy_syntax(OnigSyntaxType* to, const OnigSyntaxType* from);
11135unsigned int onig_get_syntax_op(const OnigSyntaxType* syntax);
11137unsigned int onig_get_syntax_op2(const OnigSyntaxType* syntax);
11139unsigned int onig_get_syntax_behavior(const OnigSyntaxType* syntax);
11141OnigOptionType onig_get_syntax_options(const OnigSyntaxType* syntax);
11143void onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op);
11145void onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2);
11147void onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior);
11149void onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options);
11151int onig_set_meta_char(OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code);
11153void onig_copy_encoding(OnigEncodingType *to, OnigEncoding from);
11155OnigCaseFoldType onig_get_default_case_fold_flag(void);
11157int onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag);
11159unsigned int onig_get_match_stack_limit_size(void);
11161int onig_set_match_stack_limit_size(unsigned int size);
11163unsigned int onig_get_parse_depth_limit(void);
11165int onig_set_parse_depth_limit(unsigned int depth);
11169const char* onig_version(void);
11171const char* onig_copyright(void);
11176extern VALUE rb_cEncoding;
11177enum ruby_encoding_consts {
11178 RUBY_ENCODING_INLINE_MAX = 127,
11179 RUBY_ENCODING_SHIFT = (RUBY_FL_USHIFT+10),
11180 RUBY_ENCODING_MASK = (RUBY_ENCODING_INLINE_MAX<<RUBY_ENCODING_SHIFT
11182 RUBY_ENCODING_MAXNAMELEN = 42
11185RB_ENCODING_SET_INLINED(VALUE obj, int encindex)
11187 VALUE f = encindex;
11188 f <<= RUBY_ENCODING_SHIFT;
11189 RB_FL_UNSET_RAW(obj, RUBY_ENCODING_MASK);
11190 RB_FL_SET_RAW(obj, f);
11193RB_ENCODING_GET_INLINED(VALUE obj)
11195 VALUE ret = RB_FL_TEST_RAW(obj, RUBY_ENCODING_MASK) >> RUBY_ENCODING_SHIFT;
11198typedef const OnigEncodingType rb_encoding;
11200int rb_char_to_option_kcode(int c, int *option, int *kcode);
11201int rb_enc_replicate(const char *name, rb_encoding *src);
11202int rb_define_dummy_encoding(const char *name);
11203__attribute__((__pure__))
11204int rb_enc_dummy_p(rb_encoding *enc);
11205__attribute__((__pure__))
11206int rb_enc_to_index(rb_encoding *enc);
11207int rb_enc_get_index(VALUE obj);
11209RB_ENCODING_GET(VALUE obj)
11211 int encindex = RB_ENCODING_GET_INLINED(obj);
11212 if (encindex == RUBY_ENCODING_INLINE_MAX) {
11213 return rb_enc_get_index(obj);
11219void rb_enc_set_index(VALUE obj, int encindex);
11221RB_ENCODING_SET(VALUE obj, int encindex)
11223 rb_enc_set_index(obj, encindex);
11226RB_ENCODING_CODERANGE_SET(VALUE obj, int encindex, enum ruby_coderange_type cr)
11228 RB_ENCODING_SET(obj, encindex);
11229 RB_ENC_CODERANGE_SET(obj, cr);
11231__attribute__((__pure__))
11232int rb_enc_capable(VALUE obj);
11233int rb_enc_find_index(const char *name);
11234int rb_enc_alias(const char *alias, const char *orig);
11235int rb_to_encoding_index(VALUE obj);
11236rb_encoding *rb_to_encoding(VALUE obj);
11237rb_encoding *rb_find_encoding(VALUE obj);
11238rb_encoding *rb_enc_get(VALUE obj);
11239rb_encoding *rb_enc_compatible(VALUE str1, VALUE str2);
11240rb_encoding *rb_enc_check(VALUE str1,VALUE str2);
11241VALUE rb_enc_associate_index(VALUE obj, int encindex);
11242VALUE rb_enc_associate(VALUE obj, rb_encoding *enc);
11243void rb_enc_copy(VALUE dst, VALUE src);
11244rb_encoding *rb_enc_from_index(int idx);
11245rb_encoding *rb_enc_find(const char *name);
11246static inline const char *
11247rb_enc_name(rb_encoding *enc)
11252rb_enc_mbminlen(rb_encoding *enc)
11254 return enc->min_enc_len;
11257rb_enc_mbmaxlen(rb_encoding *enc)
11259 return enc->max_enc_len;
11261int rb_enc_mbclen(const char *p, const char *e, rb_encoding *enc);
11262int rb_enc_fast_mbclen(const char *p, const char *e, rb_encoding *enc);
11263int rb_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc);
11264int rb_enc_ascget(const char *p, const char *e, int *len, rb_encoding *enc);
11265unsigned int rb_enc_codepoint_len(const char *p, const char *e, int *len, rb_encoding *enc);
11266static inline unsigned int
11267rb_enc_codepoint(const char *p, const char *e, rb_encoding *enc)
11269 return rb_enc_codepoint_len(p, e, 0, enc);
11271static inline OnigCodePoint
11272rb_enc_mbc_to_codepoint(const char *p, const char *e, rb_encoding *enc)
11274 const OnigUChar *up = ((const OnigUChar *)p);
11275 const OnigUChar *ue = ((const OnigUChar *)e);
11276 return (enc)->mbc_to_code((up),(ue),enc);
11278int rb_enc_codelen(int code, rb_encoding *enc);
11280rb_enc_code_to_mbclen(int c, rb_encoding *enc)
11282 OnigCodePoint uc = ((OnigCodePoint)c);
11283 return (enc)->code_to_mbclen(uc,enc);
11286rb_enc_mbcput(unsigned int c, void *buf, rb_encoding *enc)
11288 OnigCodePoint uc = ((OnigCodePoint)c);
11289 OnigUChar *ubuf = ((OnigUChar *)buf);
11290 return (enc)->code_to_mbc(uc,ubuf,enc);
11292static inline char *
11293rb_enc_prev_char(const char *s, const char *p, const char *e, rb_encoding *enc)
11295 const OnigUChar *us = ((const OnigUChar *)s);
11296 const OnigUChar *up = ((const OnigUChar *)p);
11297 const OnigUChar *ue = ((const OnigUChar *)e);
11298 OnigUChar *ur = onigenc_get_prev_char_head(enc, us, up, ue);
11299 return ((char *)ur);
11301static inline char *
11302rb_enc_left_char_head(const char *s, const char *p, const char *e, rb_encoding *enc)
11304 const OnigUChar *us = ((const OnigUChar *)s);
11305 const OnigUChar *up = ((const OnigUChar *)p);
11306 const OnigUChar *ue = ((const OnigUChar *)e);
11307 OnigUChar *ur = onigenc_get_left_adjust_char_head(enc, us, up, ue);
11308 return ((char *)ur);
11310static inline char *
11311rb_enc_right_char_head(const char *s, const char *p, const char *e, rb_encoding *enc)
11313 const OnigUChar *us = ((const OnigUChar *)s);
11314 const OnigUChar *up = ((const OnigUChar *)p);
11315 const OnigUChar *ue = ((const OnigUChar *)e);
11316 OnigUChar *ur = onigenc_get_right_adjust_char_head(enc, us, up, ue);
11317 return ((char *)ur);
11319static inline char *
11320rb_enc_step_back(const char *s, const char *p, const char *e, int n, rb_encoding *enc)
11322 const OnigUChar *us = ((const OnigUChar *)s);
11323 const OnigUChar *up = ((const OnigUChar *)p);
11324 const OnigUChar *ue = ((const OnigUChar *)e);
11325 const OnigUChar *ur = onigenc_step_back(enc, us, up, ue, n);
11326 return ((char *)ur);
11329rb_enc_asciicompat_inline(rb_encoding *enc)
11331 return rb_enc_mbminlen(enc)==1 && !rb_enc_dummy_p(enc);
11334rb_enc_asciicompat(rb_encoding *enc)
11336 if (rb_enc_mbminlen(enc) != 1) {
11339 else if (rb_enc_dummy_p(enc)) {
11347rb_enc_str_asciicompat_p(VALUE str)
11349 rb_encoding *enc = rb_enc_get(str);
11350 return rb_enc_asciicompat(enc);
11352VALUE rb_enc_from_encoding(rb_encoding *enc);
11353__attribute__((__pure__))
11354int rb_enc_unicode_p(rb_encoding *enc);
11355__attribute__((__returns_nonnull__))
11356rb_encoding *rb_ascii8bit_encoding(void);
11357__attribute__((__returns_nonnull__))
11358rb_encoding *rb_utf8_encoding(void);
11359__attribute__((__returns_nonnull__))
11360rb_encoding *rb_usascii_encoding(void);
11361rb_encoding *rb_locale_encoding(void);
11362rb_encoding *rb_filesystem_encoding(void);
11363rb_encoding *rb_default_external_encoding(void);
11364rb_encoding *rb_default_internal_encoding(void);
11365__attribute__((__const__))
11366int rb_ascii8bit_encindex(void);
11368RB_ENCODING_IS_ASCII8BIT(VALUE obj)
11370 return RB_ENCODING_GET_INLINED(obj) == rb_ascii8bit_encindex();
11372__attribute__((__const__))
11373int rb_utf8_encindex(void);
11374__attribute__((__const__))
11375int rb_usascii_encindex(void);
11376int rb_locale_encindex(void);
11377int rb_filesystem_encindex(void);
11378VALUE rb_enc_default_external(void);
11379VALUE rb_enc_default_internal(void);
11380void rb_enc_set_default_external(VALUE encoding);
11381void rb_enc_set_default_internal(VALUE encoding);
11382VALUE rb_locale_charmap(VALUE klass);
11388rb_enc_is_newline(const char *p, const char *e, rb_encoding *enc)
11390 OnigUChar *up = ((OnigUChar *)p);
11391 OnigUChar *ue = ((OnigUChar *)e);
11392 return (enc)->is_mbc_newline((up),(ue),enc);
11395rb_enc_isctype(OnigCodePoint c, OnigCtype t, rb_encoding *enc)
11397 return (enc)->is_code_ctype(c,t,enc);
11400rb_enc_isascii(OnigCodePoint c, rb_encoding *enc)
11402 return ((c) < 128);
11405rb_enc_isalpha(OnigCodePoint c, rb_encoding *enc)
11407 return (enc)->is_code_ctype(c,1,enc);
11410rb_enc_islower(OnigCodePoint c, rb_encoding *enc)
11412 return (enc)->is_code_ctype(c,6,enc);
11415rb_enc_isupper(OnigCodePoint c, rb_encoding *enc)
11417 return (enc)->is_code_ctype(c,10,enc);
11420rb_enc_ispunct(OnigCodePoint c, rb_encoding *enc)
11422 return (enc)->is_code_ctype(c,8,enc);
11425rb_enc_isalnum(OnigCodePoint c, rb_encoding *enc)
11427 return (enc)->is_code_ctype(c,13,enc);
11430rb_enc_isprint(OnigCodePoint c, rb_encoding *enc)
11432 return (enc)->is_code_ctype(c,7,enc);
11435rb_enc_isspace(OnigCodePoint c, rb_encoding *enc)
11437 return (enc)->is_code_ctype(c,9,enc);
11440rb_enc_isdigit(OnigCodePoint c, rb_encoding *enc)
11442 return (enc)->is_code_ctype(c,4,enc);
11444__attribute__((__const__))
11445int rb_enc_toupper(int c, rb_encoding *enc);
11446__attribute__((__const__))
11447int rb_enc_tolower(int c, rb_encoding *enc);
11452__attribute__((__nonnull__ ()))
11453char *rb_enc_path_next(const char *path, const char *end, rb_encoding *enc);
11454__attribute__((__nonnull__ ()))
11455char *rb_enc_path_skip_prefix(const char *path, const char *end, rb_encoding *enc);
11456__attribute__((__nonnull__ ()))
11457char *rb_enc_path_last_separator(const char *path, const char *end, rb_encoding *enc);
11458__attribute__((__nonnull__ ()))
11459char *rb_enc_path_end(const char *path, const char *end, rb_encoding *enc);
11460__attribute__((__nonnull__ (1, 4)))
11461const char *ruby_enc_find_basename(const char *name, long *baselen, long *alllen, rb_encoding *enc);
11462__attribute__((__nonnull__ (1, 3)))
11463const char *ruby_enc_find_extname(const char *name, long *len, rb_encoding *enc);
11468VALUE rb_enc_reg_new(const char *ptr, long len, rb_encoding *enc, int opts);
11473__attribute__((__nonnull__ (2)))
11474__attribute__((__format__(__printf__, 2, 3)))
11475VALUE rb_enc_sprintf(rb_encoding *enc, const char *fmt, ...);
11476__attribute__((__nonnull__ (2)))
11477__attribute__((__format__(__printf__, 2, 0)))
11478VALUE rb_enc_vsprintf(rb_encoding *enc, const char *fmt, va_list ap);
11479__attribute__((__noreturn__))
11480__attribute__((__nonnull__ (3)))
11481__attribute__((__format__(__printf__, 3, 4)))
11482void rb_enc_raise(rb_encoding *enc, VALUE exc, const char *fmt, ...);
11487VALUE rb_enc_str_new(const char *ptr, long len, rb_encoding *enc);
11488__attribute__((__nonnull__ (1)))
11489VALUE rb_enc_str_new_cstr(const char *ptr, rb_encoding *enc);
11490VALUE rb_enc_str_new_static(const char *ptr, long len, rb_encoding *enc);
11491VALUE rb_enc_interned_str(const char *ptr, long len, rb_encoding *enc);
11492__attribute__((__nonnull__ (1)))
11493VALUE rb_enc_interned_str_cstr(const char *ptr, rb_encoding *enc);
11494long rb_enc_strlen(const char *head, const char *tail, rb_encoding *enc);
11495char *rb_enc_nth(const char *head, const char *tail, long nth, rb_encoding *enc);
11496VALUE rb_obj_encoding(VALUE obj);
11497VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc);
11498VALUE rb_enc_uint_chr(unsigned int code, rb_encoding *enc);
11499VALUE rb_external_str_new_with_enc(const char *ptr, long len, rb_encoding *enc);
11500VALUE rb_str_export_to_enc(VALUE obj, rb_encoding *enc);
11501VALUE rb_str_conv_enc(VALUE str, rb_encoding *from, rb_encoding *to);
11502VALUE rb_str_conv_enc_opts(VALUE str, rb_encoding *from, rb_encoding *to, int ecflags, VALUE ecopts);
11503int rb_enc_str_coderange(VALUE str);
11504long rb_str_coderange_scan_restartable(const char *str, const char *end, rb_encoding *enc, int *cr);
11505int rb_enc_str_asciionly_p(VALUE str);
11506__attribute__((__nonnull__ ()))
11507long rb_memsearch(const void *x, long m, const void *y, long n, rb_encoding *enc);
11508__attribute__((__nonnull__ ()))
11510rbimpl_enc_str_new_cstr(const char *str, rb_encoding *enc)
11512 long len = rbimpl_strlen(str);
11513 return rb_enc_str_new_static(str, len, enc);
11519ID rb_intern3(const char *name, long len, rb_encoding *enc);
11520__attribute__((__nonnull__ ()))
11521int rb_enc_symname_p(const char *str, rb_encoding *enc);
11522int rb_enc_symname2_p(const char *name, long len, rb_encoding *enc);
11523ID rb_check_id_cstr(const char *ptr, long len, rb_encoding *enc);
11524VALUE rb_check_symbol_cstr(const char *ptr, long len, rb_encoding *enc);
11530 econv_invalid_byte_sequence,
11531 econv_undefined_conversion,
11532 econv_destination_buffer_full,
11533 econv_source_buffer_empty,
11535 econv_after_output,
11536 econv_incomplete_input
11537} rb_econv_result_t;
11538typedef struct rb_econv_t rb_econv_t;
11539VALUE rb_str_encode(VALUE str, VALUE to, int ecflags, VALUE ecopts);
11540int rb_econv_has_convpath_p(const char* from_encoding, const char* to_encoding);
11541int rb_econv_prepare_options(VALUE opthash, VALUE *ecopts, int ecflags);
11542int rb_econv_prepare_opts(VALUE opthash, VALUE *ecopts);
11543rb_econv_t *rb_econv_open(const char *source_encoding, const char *destination_encoding, int ecflags);
11544rb_econv_t *rb_econv_open_opts(const char *source_encoding, const char *destination_encoding, int ecflags, VALUE ecopts);
11545rb_econv_result_t rb_econv_convert(rb_econv_t *ec,
11546 const unsigned char **source_buffer_ptr, const unsigned char *source_buffer_end,
11547 unsigned char **destination_buffer_ptr, unsigned char *destination_buffer_end,
11549void rb_econv_close(rb_econv_t *ec);
11550int rb_econv_set_replacement(rb_econv_t *ec, const unsigned char *str, size_t len, const char *encname);
11551int rb_econv_decorate_at_first(rb_econv_t *ec, const char *decorator_name);
11552int rb_econv_decorate_at_last(rb_econv_t *ec, const char *decorator_name);
11553VALUE rb_econv_open_exc(const char *senc, const char *denc, int ecflags);
11554int rb_econv_insert_output(rb_econv_t *ec,
11555 const unsigned char *str, size_t len, const char *str_encoding);
11556const char *rb_econv_encoding_to_insert_output(rb_econv_t *ec);
11557void rb_econv_check_error(rb_econv_t *ec);
11558VALUE rb_econv_make_exception(rb_econv_t *ec);
11559int rb_econv_putbackable(rb_econv_t *ec);
11560void rb_econv_putback(rb_econv_t *ec, unsigned char *p, int n);
11561const char *rb_econv_asciicompat_encoding(const char *encname);
11562VALUE rb_econv_str_convert(rb_econv_t *ec, VALUE src, int flags);
11563VALUE rb_econv_substr_convert(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, int flags);
11564VALUE rb_econv_str_append(rb_econv_t *ec, VALUE src, VALUE dst, int flags);
11565VALUE rb_econv_substr_append(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, VALUE dst, int flags);
11566VALUE rb_econv_append(rb_econv_t *ec, const char *bytesrc, long bytesize, VALUE dst, int flags);
11567void rb_econv_binmode(rb_econv_t *ec);
11568enum ruby_econv_flag_type {
11569 RUBY_ECONV_ERROR_HANDLER_MASK = 0x000000ff,
11570 RUBY_ECONV_INVALID_MASK = 0x0000000f,
11571 RUBY_ECONV_INVALID_REPLACE = 0x00000002,
11572 RUBY_ECONV_UNDEF_MASK = 0x000000f0,
11573 RUBY_ECONV_UNDEF_REPLACE = 0x00000020,
11574 RUBY_ECONV_UNDEF_HEX_CHARREF = 0x00000030,
11575 RUBY_ECONV_DECORATOR_MASK = 0x0000ff00,
11576 RUBY_ECONV_NEWLINE_DECORATOR_MASK = 0x00003f00,
11577 RUBY_ECONV_NEWLINE_DECORATOR_READ_MASK = 0x00000f00,
11578 RUBY_ECONV_NEWLINE_DECORATOR_WRITE_MASK = 0x00003000,
11579 RUBY_ECONV_UNIVERSAL_NEWLINE_DECORATOR = 0x00000100,
11580 RUBY_ECONV_CRLF_NEWLINE_DECORATOR = 0x00001000,
11581 RUBY_ECONV_CR_NEWLINE_DECORATOR = 0x00002000,
11582 RUBY_ECONV_XML_TEXT_DECORATOR = 0x00004000,
11583 RUBY_ECONV_XML_ATTR_CONTENT_DECORATOR = 0x00008000,
11584 RUBY_ECONV_STATEFUL_DECORATOR_MASK = 0x00f00000,
11585 RUBY_ECONV_XML_ATTR_QUOTE_DECORATOR = 0x00100000,
11586 RUBY_ECONV_DEFAULT_NEWLINE_DECORATOR =
11588 RUBY_ECONV_PARTIAL_INPUT = 0x00010000,
11589 RUBY_ECONV_AFTER_OUTPUT = 0x00020000,
11590 RUBY_ECONV_FLAGS_PLACEHOLDER
11594VALUE rb_fstring(VALUE);
11595VALUE rb_fstring_cstr(const char *str);
11596VALUE rb_fstring_enc_new(const char *ptr, long len, rb_encoding *enc);
11597int rb_str_buf_cat_escaped_char(VALUE result, unsigned int c, int unicode_p);
11598int rb_str_symname_p(VALUE);
11599VALUE rb_str_quote_unprintable(VALUE);
11600char *rb_str_fill_terminator(VALUE str, const int termlen);
11601void rb_str_change_terminator_length(VALUE str, const int oldtermlen, const int termlen);
11602VALUE rb_str_locktmp_ensure(VALUE str, VALUE (*func)(VALUE), VALUE arg);
11603VALUE rb_str_chomp_string(VALUE str, VALUE chomp);
11604VALUE rb_external_str_with_enc(VALUE str, rb_encoding *eenc);
11605VALUE rb_str_cat_conv_enc_opts(VALUE newstr, long ofs, const char *ptr, long len,
11606 rb_encoding *from, int ecflags, VALUE ecopts);
11607VALUE rb_enc_str_scrub(rb_encoding *enc, VALUE str, VALUE repl);
11608VALUE rb_str_escape(VALUE str);
11609size_t rb_str_memsize(VALUE);
11610char *rb_str_to_cstr(VALUE str);
11611const char *ruby_escaped_char(int c);
11612void rb_str_make_independent(VALUE str);
11613int rb_enc_str_coderange_scan(VALUE str, rb_encoding *enc);
11614static inline _Bool STR_EMBED_P(VALUE str);
11615static inline _Bool STR_SHARED_P(VALUE str);
11616static inline VALUE QUOTE(VALUE v);
11617static inline VALUE QUOTE_ID(ID v);
11618static inline _Bool is_ascii_string(VALUE str);
11619static inline _Bool is_broken_string(VALUE str);
11620static inline VALUE rb_str_eql_internal(const VALUE str1, const VALUE str2);
11623VALUE rb_str_tmp_frozen_acquire(VALUE str);
11624void rb_str_tmp_frozen_release(VALUE str, VALUE tmp);
11625VALUE rb_setup_fake_str(struct RString *fake_str, const char *name, long len, rb_encoding *enc);
11626VALUE rb_str_upto_each(VALUE, VALUE, int, int (*each)(VALUE, VALUE), VALUE);
11627VALUE rb_str_upto_endless_each(VALUE, int (*each)(VALUE, VALUE), VALUE);
11632VALUE rb_fstring_new(const char *ptr, long len);
11633VALUE rb_obj_as_string_result(VALUE str, VALUE obj);
11634VALUE rb_str_opt_plus(VALUE x, VALUE y);
11635VALUE rb_str_concat_literals(size_t num, const VALUE *strary);
11636VALUE rb_str_eql(VALUE str1, VALUE str2);
11637VALUE rb_id_quote_unprintable(ID);
11638VALUE rb_sym_proc_call(ID mid, int argc, const VALUE *argv, int kw_splat, VALUE passed_proc);
11639struct rb_execution_context_struct;
11640VALUE rb_ec_str_resurrect(struct rb_execution_context_struct *ec, VALUE str);
11646 return rb_str_quote_unprintable(v);
11651 return rb_id_quote_unprintable(i);
11654STR_EMBED_P(VALUE str)
11656 return ! RB_FL_TEST_RAW(str, ((VALUE)RUBY_FL_USER1));
11659STR_SHARED_P(VALUE str)
11661 return RB_FL_ALL_RAW(str, ((VALUE)RUBY_FL_USER1) | RUBY_ELTS_SHARED);
11664is_ascii_string(VALUE str)
11666 return rb_enc_str_coderange(str) == RUBY_ENC_CODERANGE_7BIT;
11669is_broken_string(VALUE str)
11671 return rb_enc_str_coderange(str) == RUBY_ENC_CODERANGE_BROKEN;
11674rb_str_eql_internal(const VALUE str1, const VALUE str2)
11676 const long len = RSTRING_LEN(str1);
11677 const char *ptr1, *ptr2;
11678 if (len != RSTRING_LEN(str2)) return ((VALUE)RUBY_Qfalse);
11679 if (!rb_str_comparable(str1, str2)) return ((VALUE)RUBY_Qfalse);
11680 if ((ptr1 = RSTRING_PTR(str1)) == (ptr2 = RSTRING_PTR(str2)))
11681 return ((VALUE)RUBY_Qtrue);
11682 if (memcmp(ptr1, ptr2, len) == 0)
11683 return ((VALUE)RUBY_Qtrue);
11684 return ((VALUE)RUBY_Qfalse);
11686extern long rb_backtrace_length_limit;
11687extern VALUE rb_eEAGAIN;
11688extern VALUE rb_eEWOULDBLOCK;
11689extern VALUE rb_eEINPROGRESS;
11690__attribute__((__format__(__printf__, 3, 0)))
11691void rb_report_bug_valist(VALUE file, int line, const char *fmt, va_list args);
11692__attribute__((__noreturn__)) void rb_async_bug_errno(const char *,int);
11693const char *rb_builtin_type_name(int t);
11694const char *rb_builtin_class_name(VALUE x);
11695__attribute__((__format__(__printf__, (1), (3)))) void rb_warn_deprecated(const char *fmt, const char *suggest, ...);
11696__attribute__((__format__(__printf__, (2), (4)))) void rb_warn_deprecated_to_remove(const char *removal, const char *fmt, const char *suggest, ...);
11697__attribute__((__format__(__printf__, 6, 0)))
11698VALUE rb_syntax_error_append(VALUE, VALUE, int, int, rb_encoding*, const char*, va_list);
11699__attribute__((__format__(__printf__, (2), (3)))) void rb_enc_warn(rb_encoding *enc, const char *fmt, ...);
11700__attribute__((__format__(__printf__, (2), (3)))) void rb_sys_enc_warning(rb_encoding *enc, const char *fmt, ...);
11701__attribute__((__format__(__printf__, (3), (4)))) void rb_syserr_enc_warning(int err, rb_encoding *enc, const char *fmt, ...);
11702rb_warning_category_t rb_warning_category_from_name(VALUE category);
11703_Bool rb_warning_category_enabled_p(rb_warning_category_t category);
11704VALUE rb_name_err_new(VALUE mesg, VALUE recv, VALUE method);
11705VALUE rb_nomethod_err_new(VALUE mesg, VALUE recv, VALUE method, VALUE args, int priv);
11706VALUE rb_key_err_new(VALUE mesg, VALUE recv, VALUE name);
11707__attribute__((__format__(__printf__, (1), (2)))) VALUE rb_warning_string(const char *fmt, ...);
11708__attribute__((__format__(__printf__, 2, 0)))
11709__attribute__((__noreturn__)) void rb_vraise(VALUE, const char *, va_list);
11710__attribute__((__noreturn__)) static inline void rb_raise_cstr(VALUE etype, const char *mesg);
11711__attribute__((__noreturn__)) static inline void rb_raise_cstr_i(VALUE etype, VALUE mesg);
11712__attribute__((__noreturn__)) static inline void rb_name_err_raise_str(VALUE mesg, VALUE recv, VALUE name);
11713__attribute__((__noreturn__)) static inline void rb_name_err_raise(const char *mesg, VALUE recv, VALUE name);
11714__attribute__((__noreturn__)) static inline void rb_key_err_raise(VALUE mesg, VALUE recv, VALUE name);
11715static inline void Check_Type(VALUE v, enum ruby_value_type t);
11716static inline _Bool rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type);
11719int rb_bug_reporter_add(void (*func)(FILE *, void *), void *data);
11720__attribute__((__noreturn__)) void rb_sys_fail_path_in(const char *func_name, VALUE path);
11721__attribute__((__noreturn__)) void rb_syserr_fail_path_in(const char *func_name, int err, VALUE path);
11722VALUE rb_syserr_new_path_in(const char *func_name, int n, VALUE path);
11726rb_raise_cstr_i(VALUE etype, VALUE mesg)
11728 VALUE exc = rb_exc_new_str(etype, mesg);
11732rb_raise_cstr(VALUE etype, const char *mesg)
11734 VALUE str = ((__builtin_constant_p(mesg) ? rbimpl_str_new_cstr : rb_str_new_cstr) (mesg));
11735 rb_raise_cstr_i(etype, str);
11738rb_name_err_raise_str(VALUE mesg, VALUE recv, VALUE name)
11740 VALUE exc = rb_name_err_new(mesg, recv, name);
11744rb_name_err_raise(const char *mesg, VALUE recv, VALUE name)
11746 VALUE str = (__builtin_constant_p(mesg) ? rb_fstring_new((mesg), (long)strlen(mesg)) : (rb_fstring_cstr)(mesg));
11747 rb_name_err_raise_str(str, recv, name);
11750rb_key_err_raise(VALUE mesg, VALUE recv, VALUE name)
11752 VALUE exc = rb_key_err_new(mesg, recv, name);
11756rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type)
11758 return RB_TYPE_P(obj, RUBY_T_DATA) && RTYPEDDATA_P(obj) && (RTYPEDDATA_TYPE(obj) == data_type);
11760extern ID ruby_static_id_signo;
11761extern ID ruby_static_id_status;
11762VALUE rb_refinement_module_get_refined_class(VALUE module);
11763void rb_class_modify_check(VALUE);
11764__attribute__((__noreturn__)) VALUE rb_f_raise(int argc, VALUE *argv);
11765VALUE rb_get_backtrace(VALUE info);
11766void rb_call_end_proc(VALUE data);
11767void rb_mark_end_proc(void);
11768void Init_class_hierarchy(void);
11769void Init_enc(void);
11770void Init_ext(void);
11771void Init_File(void);
11772void Init_heap(void);
11773int Init_enc_set_filesystem_encoding(void);
11774void Init_newline(void);
11775void Init_BareVM(void);
11776void Init_vm_objects(void);
11777void Init_vm_backtrace(void);
11778void Init_vm_eval(void);static inline
11779void Init_vm_stack_canary(void);
11780void Init_eval_method(void);
11781void rb_call_inits(void);
11783enum rb_id_table_iterator_result {
11784 ID_TABLE_CONTINUE = ST_CONTINUE,
11785 ID_TABLE_STOP = ST_STOP,
11786 ID_TABLE_DELETE = ST_DELETE,
11787 ID_TABLE_REPLACE = ST_REPLACE,
11788 ID_TABLE_ITERATOR_RESULT_END
11790struct rb_id_table *rb_id_table_create(size_t size);
11791void rb_id_table_free(struct rb_id_table *tbl);
11792void rb_id_table_clear(struct rb_id_table *tbl);
11793size_t rb_id_table_size(const struct rb_id_table *tbl);
11794size_t rb_id_table_memsize(const struct rb_id_table *tbl);
11795int rb_id_table_insert(struct rb_id_table *tbl, ID id, VALUE val);
11796int rb_id_table_lookup(struct rb_id_table *tbl, ID id, VALUE *valp);
11797int rb_id_table_delete(struct rb_id_table *tbl, ID id);
11798typedef enum rb_id_table_iterator_result rb_id_table_update_callback_func_t(ID *id, VALUE *val, void *data, int existing);
11799typedef enum rb_id_table_iterator_result rb_id_table_foreach_func_t(ID id, VALUE val, void *data);
11800typedef enum rb_id_table_iterator_result rb_id_table_foreach_values_func_t(VALUE val, void *data);
11801void rb_id_table_foreach(struct rb_id_table *tbl, rb_id_table_foreach_func_t *func, void *data);
11802void rb_id_table_foreach_with_replace(struct rb_id_table *tbl, rb_id_table_foreach_func_t *func, rb_id_table_update_callback_func_t *replace, void *data);
11803void rb_id_table_foreach_values(struct rb_id_table *tbl, rb_id_table_foreach_values_func_t *func, void *data);
11804struct rb_subclass_entry {
11806 struct rb_subclass_entry *next;
11807 struct rb_subclass_entry *prev;
11809struct rb_iv_index_tbl_entry {
11811 rb_serial_t class_serial;
11814struct rb_cvar_class_tbl_entry {
11816 rb_serial_t global_cvar_state;
11819struct rb_classext_struct {
11820 struct st_table *iv_index_tbl;
11821 struct st_table *iv_tbl;
11822 struct rb_id_table *m_tbl;
11823 struct rb_id_table *const_tbl;
11824 struct rb_id_table *callable_m_tbl;
11825 struct rb_id_table *cc_tbl;
11826 struct rb_id_table *cvc_tbl;
11827 size_t superclass_depth;
11828 VALUE *superclasses;
11829 struct rb_subclass_entry *subclasses;
11830 struct rb_subclass_entry *subclass_entry;
11831 struct rb_subclass_entry *module_subclass_entry;
11832 const VALUE origin_;
11833 const VALUE refined_class;
11834 rb_alloc_func_t allocator;
11835 const VALUE includer;
11838 struct RBasic basic;
11840 struct rb_classext_struct *ptr;
11841 rb_serial_t class_serial;
11843typedef struct rb_subclass_entry rb_subclass_entry_t;
11844typedef struct rb_classext_struct rb_classext_t;
11845void rb_class_subclass_add(VALUE super, VALUE klass);
11846void rb_class_remove_from_super_subclasses(VALUE);
11847void rb_class_update_superclasses(VALUE);
11848size_t rb_class_superclasses_memsize(VALUE);
11849void rb_class_remove_subclass_head(VALUE);
11850int rb_singleton_class_internal_p(VALUE sklass);
11851VALUE rb_class_boot(VALUE);
11852VALUE rb_class_s_alloc(VALUE klass);
11853VALUE rb_module_s_alloc(VALUE klass);
11854void rb_module_set_initialized(VALUE module);
11855void rb_module_check_initializable(VALUE module);
11856VALUE rb_make_metaclass(VALUE, VALUE);
11857VALUE rb_include_class_new(VALUE, VALUE);
11858void rb_class_foreach_subclass(VALUE klass, void (*f)(VALUE, VALUE), VALUE);
11859void rb_class_detach_subclasses(VALUE);
11860void rb_class_detach_module_subclasses(VALUE);
11861void rb_class_remove_from_module_subclasses(VALUE);
11862VALUE rb_obj_methods(int argc, const VALUE *argv, VALUE obj);
11863VALUE rb_obj_protected_methods(int argc, const VALUE *argv, VALUE obj);
11864VALUE rb_obj_private_methods(int argc, const VALUE *argv, VALUE obj);
11865VALUE rb_obj_public_methods(int argc, const VALUE *argv, VALUE obj);
11866VALUE rb_special_singleton_class(VALUE);
11867VALUE rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach);
11868VALUE rb_singleton_class_get(VALUE obj);
11869void rb_undef_methods_from(VALUE klass, VALUE super);
11870static inline void RCLASS_SET_ORIGIN(VALUE klass, VALUE origin);
11871static inline void RICLASS_SET_ORIGIN_SHARED_MTBL(VALUE iclass);
11872static inline VALUE RCLASS_SUPER(VALUE klass);
11873static inline VALUE RCLASS_SET_SUPER(VALUE klass, VALUE super);
11874static inline void RCLASS_SET_INCLUDER(VALUE iclass, VALUE klass);
11877VALUE rb_class_inherited(VALUE, VALUE);
11878VALUE rb_keyword_error_new(const char *, VALUE);
11882RCLASS_SET_ORIGIN(VALUE klass, VALUE origin)
11884 rb_obj_write((VALUE)(klass), __extension__({
11886 ; __typeof__((VALUE *)(&((((struct RClass *)(klass))->ptr)->origin_))) unaligned_member_access_result = ((VALUE *)(&((((struct RClass *)(klass))->ptr)->origin_)));
11887 ; unaligned_member_access_result; }), (VALUE)(origin), "./internal/class.h", 164);
11888 if (klass != origin) RB_FL_SET(origin, ((VALUE)RUBY_FL_USER5));
11891RICLASS_SET_ORIGIN_SHARED_MTBL(VALUE iclass)
11893 RB_FL_SET(iclass, ((VALUE)RUBY_FL_USER8));
11896RICLASS_OWNS_M_TBL_P(VALUE iclass)
11898 return RB_FL_TEST_RAW(iclass, ((VALUE)RUBY_FL_USER5) | ((VALUE)RUBY_FL_USER8)) == ((VALUE)RUBY_FL_USER5);
11901RCLASS_SET_INCLUDER(VALUE iclass, VALUE klass)
11903 rb_obj_write((VALUE)(iclass), __extension__({
11905 ; __typeof__((VALUE *)(&((((struct RClass *)(iclass))->ptr)->includer))) unaligned_member_access_result = ((VALUE *)(&((((struct RClass *)(iclass))->ptr)->includer)));
11906 ; unaligned_member_access_result; }), (VALUE)(klass), "./internal/class.h", 183);
11909RCLASS_SUPER(VALUE klass)
11911 return ((struct RClass *)(klass))->super;
11914RCLASS_SET_SUPER(VALUE klass, VALUE super)
11917 rb_class_remove_from_super_subclasses(klass);
11918 rb_class_subclass_add(super, klass);
11920 rb_obj_write((VALUE)(klass), __extension__({
11922 ; __typeof__((VALUE *)(&((struct RClass *)(klass))->super)) unaligned_member_access_result = ((VALUE *)(&((struct RClass *)(klass))->super));
11923 ; unaligned_member_access_result; }), (VALUE)(super), "./internal/class.h", 199);
11924 rb_class_update_superclasses(klass);
11927VALUE rb_class_search_ancestor(VALUE klass, VALUE super);
11928__attribute__((__noreturn__)) void rb_undefined_alloc(VALUE klass);
11929double rb_num_to_dbl(VALUE val);
11930VALUE rb_obj_dig(int argc, VALUE *argv, VALUE self, VALUE notfound);
11931VALUE rb_immutable_obj_clone(int, VALUE *, VALUE);
11932VALUE rb_check_convert_type_with_id(VALUE,int,const char*,ID);
11933int rb_bool_expected(VALUE, const char *);
11934static inline void RBASIC_CLEAR_CLASS(VALUE obj);
11935static inline void RBASIC_SET_CLASS_RAW(VALUE obj, VALUE klass);
11936static inline void RBASIC_SET_CLASS(VALUE obj, VALUE klass);
11937static inline struct st_table *ROBJECT_IV_INDEX_TBL_inline(VALUE obj);
11940int rb_opts_exception_p(VALUE opts, int default_value);
11945__attribute__((__const__)) VALUE rb_obj_equal(VALUE obj1, VALUE obj2);
11946__attribute__((__const__)) VALUE rb_obj_not(VALUE obj);
11947VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2);
11948void rb_obj_copy_ivar(VALUE dest, VALUE obj);
11949VALUE rb_false(VALUE obj);
11950VALUE rb_convert_type_with_id(VALUE v, int t, const char* nam, ID mid);
11951VALUE rb_obj_size(VALUE self, VALUE args, VALUE obj);
11952VALUE rb_get_freeze_opt(int argc, VALUE *argv);
11956RBASIC_SET_CLASS_RAW(VALUE obj, VALUE klass)
11958 const VALUE *ptr = &((struct RBasic *)(obj))->klass;
11959 *(VALUE *)ptr = klass;
11962RBASIC_CLEAR_CLASS(VALUE obj)
11964 RBASIC_SET_CLASS_RAW(obj, 0);
11967RBASIC_SET_CLASS(VALUE obj, VALUE klass)
11969 VALUE oldv = RBASIC_CLASS(obj);
11970 RBASIC_SET_CLASS_RAW(obj, klass);
11971 (rb_obj_written((VALUE)(obj), (VALUE)(oldv), (VALUE)(klass), "./internal/object.h", 65));
11973__attribute__((__pure__))
11974static inline struct st_table *
11975ROBJECT_IV_INDEX_TBL_inline(VALUE obj)
11977 if (RB_FL_ANY_RAW(obj, ROBJECT_EMBED)) {
11978 VALUE klass = rb_obj_class(obj);
11979 return ((((struct RClass *)(klass))->ptr)->iv_index_tbl);
11982 const struct RObject *const ptr = ((struct RObject *)(obj));
11983 return ptr->as.heap.iv_index_tbl;
11986struct rb_iseq_struct;
11987VALUE rb_parser_set_yydebug(VALUE, VALUE);
11988void *rb_parser_load_file(VALUE parser, VALUE name);
11989void rb_parser_keep_script_lines(VALUE vparser);
11992VALUE rb_parser_set_context(VALUE, const struct rb_iseq_struct *, int);
11996struct rb_iseq_struct;
11997VALUE rb_proc_location(VALUE self);
11998st_index_t rb_hash_proc(st_index_t hash, VALUE proc);
11999int rb_block_pair_yield_optimizable(void);
12000int rb_block_arity(void);
12001int rb_block_min_max_arity(int *max);
12002VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_info);
12003VALUE rb_callable_receiver(VALUE);
12006VALUE rb_func_proc_new(rb_block_call_func_t func, VALUE val);
12007VALUE rb_func_lambda_new(rb_block_call_func_t func, VALUE val, int min_argc, int max_argc);
12008VALUE rb_iseq_location(const struct rb_iseq_struct *iseq);
12009VALUE rb_sym_to_proc(VALUE sym);
12012VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
12013VALUE rb_reg_check_preprocess(VALUE);
12014long rb_reg_search0(VALUE, VALUE, long, int, int);
12015VALUE rb_reg_match_p(VALUE re, VALUE str, long pos);
12016_Bool rb_reg_start_with_p(VALUE re, VALUE str);
12017VALUE rb_reg_hash(VALUE re);
12018VALUE rb_reg_equal(VALUE re1, VALUE re2);
12019void rb_backref_set_string(VALUE string, long pos, long len);
12020void rb_match_unbusy(VALUE);
12021int rb_match_count(VALUE match);
12022int rb_match_nth_defined(int nth, VALUE match);
12025VALUE rb_reg_new_ary(VALUE ary, int options);
12028VALUE rb_to_symbol_type(VALUE obj);
12029VALUE rb_sym_intern(const char *ptr, long len, rb_encoding *enc);
12030VALUE rb_sym_intern_ascii(const char *ptr, long len);
12031VALUE rb_sym_intern_ascii_cstr(const char *ptr);
12032int rb_is_const_name(VALUE name);
12033int rb_is_class_name(VALUE name);
12034int rb_is_instance_name(VALUE name);
12035int rb_is_local_name(VALUE name);
12036__attribute__((__pure__)) int rb_is_const_sym(VALUE sym);
12037__attribute__((__pure__)) int rb_is_attrset_sym(VALUE sym);
12038ID rb_make_internal_id(void);
12039ID rb_make_temporary_id(size_t n);
12040void rb_gc_free_dsymbol(VALUE);
12041struct rb_thread_struct;
12042VALUE rb_obj_is_mutex(VALUE obj);
12043VALUE rb_suppress_tracing(VALUE (*func)(VALUE), VALUE arg);
12044void rb_thread_execute_interrupts(VALUE th);
12045VALUE rb_get_coverages(void);
12046int rb_get_coverage_mode(void);
12047VALUE rb_default_coverage(int);
12048VALUE rb_thread_shield_new(void);
12049VALUE rb_thread_shield_wait(VALUE self);
12050VALUE rb_thread_shield_release(VALUE self);
12051VALUE rb_thread_shield_destroy(VALUE self);
12052int rb_thread_to_be_killed(VALUE thread);
12053void rb_mutex_allow_trap(VALUE self, int val);
12054VALUE rb_uninterruptible(VALUE (*b_proc)(VALUE), VALUE data);
12055VALUE rb_mutex_owned_p(VALUE self);
12056int rb_thread_wait_for_single_fd(int fd, int events, struct timeval * timeout);
12059VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd);
12060int ruby_thread_has_gvl_p(void);
12065int rb_threadptr_execute_interrupts(struct rb_thread_struct *th, int blocking_timing);
12070 unsigned long int nraddr;
12074 enum { VG_USERREQ__RUNNING_ON_VALGRIND = 0x1001,
12075 VG_USERREQ__DISCARD_TRANSLATIONS = 0x1002,
12076 VG_USERREQ__CLIENT_CALL0 = 0x1101,
12077 VG_USERREQ__CLIENT_CALL1 = 0x1102,
12078 VG_USERREQ__CLIENT_CALL2 = 0x1103,
12079 VG_USERREQ__CLIENT_CALL3 = 0x1104,
12080 VG_USERREQ__COUNT_ERRORS = 0x1201,
12081 VG_USERREQ__GDB_MONITOR_COMMAND = 0x1202,
12082 VG_USERREQ__CLO_CHANGE = 0x1203,
12083 VG_USERREQ__MALLOCLIKE_BLOCK = 0x1301,
12084 VG_USERREQ__RESIZEINPLACE_BLOCK = 0x130b,
12085 VG_USERREQ__FREELIKE_BLOCK = 0x1302,
12086 VG_USERREQ__CREATE_MEMPOOL = 0x1303,
12087 VG_USERREQ__DESTROY_MEMPOOL = 0x1304,
12088 VG_USERREQ__MEMPOOL_ALLOC = 0x1305,
12089 VG_USERREQ__MEMPOOL_FREE = 0x1306,
12090 VG_USERREQ__MEMPOOL_TRIM = 0x1307,
12091 VG_USERREQ__MOVE_MEMPOOL = 0x1308,
12092 VG_USERREQ__MEMPOOL_CHANGE = 0x1309,
12093 VG_USERREQ__MEMPOOL_EXISTS = 0x130a,
12094 VG_USERREQ__PRINTF = 0x1401,
12095 VG_USERREQ__PRINTF_BACKTRACE = 0x1402,
12096 VG_USERREQ__PRINTF_VALIST_BY_REF = 0x1403,
12097 VG_USERREQ__PRINTF_BACKTRACE_VALIST_BY_REF = 0x1404,
12098 VG_USERREQ__STACK_REGISTER = 0x1501,
12099 VG_USERREQ__STACK_DEREGISTER = 0x1502,
12100 VG_USERREQ__STACK_CHANGE = 0x1503,
12101 VG_USERREQ__LOAD_PDB_DEBUGINFO = 0x1601,
12102 VG_USERREQ__MAP_IP_TO_SRCLOC = 0x1701,
12103 VG_USERREQ__CHANGE_ERR_DISABLEMENT = 0x1801,
12104 VG_USERREQ__VEX_INIT_FOR_IRI = 0x1901,
12105 VG_USERREQ__INNER_THREADS = 0x1902
12106 } Vg_ClientRequest;
12107static int VALGRIND_PRINTF(const char *format, ...)
12108 __attribute__((format(__printf__, 1, 2), __unused__));
12110VALGRIND_PRINTF(const char *format, ...)
12112 unsigned long _qzz_res;
12114 __builtin_va_start(vargs,format);
12115 _qzz_res = __extension__ ({ volatile unsigned long int _zzq_args[6]; volatile unsigned long int _zzq_result; _zzq_args[0] = (unsigned long int)(VG_USERREQ__PRINTF_VALIST_BY_REF); _zzq_args[1] = (unsigned long int)((unsigned long)format); _zzq_args[2] = (unsigned long int)((unsigned long)&vargs); _zzq_args[3] = (unsigned long int)(0); _zzq_args[4] = (unsigned long int)(0); _zzq_args[5] = (unsigned long int)(0); __asm__ volatile("rolq $3, %%rdi ; rolq $13, %%rdi\n\t" "rolq $61, %%rdi ; rolq $51, %%rdi\n\t" "xchgq %%rbx,%%rbx" : "=d" (_zzq_result) : "a" (&_zzq_args[0]), "0" (0) : "cc", "memory" ); _zzq_result; });
12116 __builtin_va_end(vargs);
12117 return (int)_qzz_res;
12119static int VALGRIND_PRINTF_BACKTRACE(const char *format, ...)
12120 __attribute__((format(__printf__, 1, 2), __unused__));
12122VALGRIND_PRINTF_BACKTRACE(const char *format, ...)
12124 unsigned long _qzz_res;
12126 __builtin_va_start(vargs,format);
12127 _qzz_res = __extension__ ({ volatile unsigned long int _zzq_args[6]; volatile unsigned long int _zzq_result; _zzq_args[0] = (unsigned long int)(VG_USERREQ__PRINTF_BACKTRACE_VALIST_BY_REF); _zzq_args[1] = (unsigned long int)((unsigned long)format); _zzq_args[2] = (unsigned long int)((unsigned long)&vargs); _zzq_args[3] = (unsigned long int)(0); _zzq_args[4] = (unsigned long int)(0); _zzq_args[5] = (unsigned long int)(0); __asm__ volatile("rolq $3, %%rdi ; rolq $13, %%rdi\n\t" "rolq $61, %%rdi ; rolq $51, %%rdi\n\t" "xchgq %%rbx,%%rbx" : "=d" (_zzq_result) : "a" (&_zzq_args[0]), "0" (0) : "cc", "memory" ); _zzq_result; });
12128 __builtin_va_end(vargs);
12129 return (int)_qzz_res;
12133 VG_USERREQ__MAKE_MEM_NOACCESS = ((unsigned int)((('M')&0xff) << 24 | (('C')&0xff) << 16)),
12134 VG_USERREQ__MAKE_MEM_UNDEFINED,
12135 VG_USERREQ__MAKE_MEM_DEFINED,
12136 VG_USERREQ__DISCARD,
12137 VG_USERREQ__CHECK_MEM_IS_ADDRESSABLE,
12138 VG_USERREQ__CHECK_MEM_IS_DEFINED,
12139 VG_USERREQ__DO_LEAK_CHECK,
12140 VG_USERREQ__COUNT_LEAKS,
12141 VG_USERREQ__GET_VBITS,
12142 VG_USERREQ__SET_VBITS,
12143 VG_USERREQ__CREATE_BLOCK,
12144 VG_USERREQ__MAKE_MEM_DEFINED_IF_ADDRESSABLE,
12145 VG_USERREQ__COUNT_LEAK_BLOCKS,
12146 VG_USERREQ__ENABLE_ADDR_ERROR_REPORTING_IN_RANGE,
12147 VG_USERREQ__DISABLE_ADDR_ERROR_REPORTING_IN_RANGE,
12148 _VG_USERREQ__MEMCHECK_RECORD_OVERLAP_ERROR
12149 = ((unsigned int)((('M')&0xff) << 24 | (('C')&0xff) << 16)) + 256
12150 } Vg_MemCheckClientRequest;
12152 int coverage_sandboxed;
12153 intptr_t coverage_fd;
12154 unsigned int coverage_max_block_size;
12155} __sanitizer_sandbox_arguments;
12156void __sanitizer_set_report_path(const char *path);
12157void __sanitizer_set_report_fd(void *fd);
12158void __sanitizer_sandbox_on_notify(__sanitizer_sandbox_arguments *args);
12159void __sanitizer_report_error_summary(const char *error_summary);
12160uint16_t __sanitizer_unaligned_load16(const void *p);
12161uint32_t __sanitizer_unaligned_load32(const void *p);
12162uint64_t __sanitizer_unaligned_load64(const void *p);
12163void __sanitizer_unaligned_store16(void *p, uint16_t x);
12164void __sanitizer_unaligned_store32(void *p, uint32_t x);
12165void __sanitizer_unaligned_store64(void *p, uint64_t x);
12166int __sanitizer_acquire_crash_state();
12167void __sanitizer_annotate_contiguous_container(const void *beg,
12169 const void *old_mid,
12170 const void *new_mid);
12171int __sanitizer_verify_contiguous_container(const void *beg, const void *mid,
12173const void *__sanitizer_contiguous_container_find_bad_address(const void *beg,
12176void __sanitizer_print_stack_trace(void);
12177void __sanitizer_symbolize_pc(void *pc, const char *fmt, char *out_buf,
12178 size_t out_buf_size);
12179void __sanitizer_symbolize_global(void *data_ptr, const char *fmt,
12180 char *out_buf, size_t out_buf_size);
12181void __sanitizer_set_death_callback(void (*callback)(void));
12182void __sanitizer_weak_hook_memcmp(void *called_pc, const void *s1,
12183 const void *s2, size_t n, int result);
12184void __sanitizer_weak_hook_strncmp(void *called_pc, const char *s1,
12185 const char *s2, size_t n, int result);
12186void __sanitizer_weak_hook_strncasecmp(void *called_pc, const char *s1,
12187 const char *s2, size_t n, int result);
12188void __sanitizer_weak_hook_strcmp(void *called_pc, const char *s1,
12189 const char *s2, int result);
12190void __sanitizer_weak_hook_strcasecmp(void *called_pc, const char *s1,
12191 const char *s2, int result);
12192void __sanitizer_weak_hook_strstr(void *called_pc, const char *s1,
12193 const char *s2, char *result);
12194void __sanitizer_weak_hook_strcasestr(void *called_pc, const char *s1,
12195 const char *s2, char *result);
12196void __sanitizer_weak_hook_memmem(void *called_pc,
12197 const void *s1, size_t len1,
12198 const void *s2, size_t len2, void *result);
12199void __sanitizer_print_memory_profile(size_t top_percent,
12200 size_t max_number_of_contexts);
12201void __sanitizer_start_switch_fiber(void **fake_stack_save,
12202 const void *bottom, size_t size);
12203void __sanitizer_finish_switch_fiber(void *fake_stack_save,
12204 const void **bottom_old,
12206int __sanitizer_get_module_and_offset_for_pc(void *pc, char *module_path,
12207 size_t module_path_len,
12209void __asan_poison_memory_region(void const volatile *addr, size_t size);
12210void __asan_unpoison_memory_region(void const volatile *addr, size_t size);
12211int __asan_address_is_poisoned(void const volatile *addr);
12212void *__asan_region_is_poisoned(void *beg, size_t size);
12213void __asan_describe_address(void *addr);
12214int __asan_report_present(void);
12215void *__asan_get_report_pc(void);
12216void *__asan_get_report_bp(void);
12217void *__asan_get_report_sp(void);
12218void *__asan_get_report_address(void);
12219int __asan_get_report_access_type(void);
12220size_t __asan_get_report_access_size(void);
12221const char *__asan_get_report_description(void);
12222const char *__asan_locate_address(void *addr, char *name, size_t name_size,
12223 void **region_address, size_t *region_size);
12224size_t __asan_get_alloc_stack(void *addr, void **trace, size_t size,
12226size_t __asan_get_free_stack(void *addr, void **trace, size_t size,
12228void __asan_get_shadow_mapping(size_t *shadow_scale, size_t *shadow_offset);
12229void __asan_report_error(void *pc, void *bp, void *sp,
12230 void *addr, int is_write, size_t access_size);
12231void __asan_set_death_callback(void (*callback)(void));
12232void __asan_set_error_report_callback(void (*callback)(const char *));
12233void __asan_on_error(void);
12234void __asan_print_accumulated_stats(void);
12235const char* __asan_default_options(void);
12236void *__asan_get_current_fake_stack(void);
12237void *__asan_addr_is_in_fake_stack(void *fake_stack, void *addr, void **beg,
12239void __asan_handle_no_return(void);
12240int __asan_update_allocation_context(void* addr);
12241extern const int ruby_api_version[];
12242extern const ID rb_iseq_shared_exc_local_tbl[];
12243static inline rb_snum_t
12244ISEQ_FLIP_CNT_INCREMENT(const rb_iseq_t *iseq)
12246 rb_snum_t cnt = iseq->body->variable.flip_count;
12247 iseq->body->variable.flip_count += 1;
12250static inline VALUE *
12251ISEQ_ORIGINAL_ISEQ(const rb_iseq_t *iseq)
12253 return iseq->body->variable.original_iseq;
12256ISEQ_ORIGINAL_ISEQ_CLEAR(const rb_iseq_t *iseq)
12258 void *ptr = iseq->body->variable.original_iseq;
12259 iseq->body->variable.original_iseq = ((void *)0);
12264static inline VALUE *
12265ISEQ_ORIGINAL_ISEQ_ALLOC(const rb_iseq_t *iseq, long size)
12267 return iseq->body->variable.original_iseq =
12268 ((VALUE *)ruby_xmalloc2((size), sizeof(VALUE)));
12270struct iseq_compile_data {
12271 const VALUE err_info;
12272 const VALUE catch_table_ary;
12273 struct iseq_label_data *start_label;
12274 struct iseq_label_data *end_label;
12275 struct iseq_label_data *redo_label;
12276 const rb_iseq_t *current_block;
12277 struct iseq_compile_data_ensure_node_stack *ensure_node_stack;
12279 struct iseq_compile_data_storage *storage_head;
12280 struct iseq_compile_data_storage *storage_current;
12283 struct iseq_compile_data_storage *storage_head;
12284 struct iseq_compile_data_storage *storage_current;
12287 int loopval_popped;
12291 int isolated_depth;
12292 unsigned int ci_index;
12293 const rb_compile_option_t *option;
12294 struct rb_id_table *ivar_cache_table;
12295 const struct rb_builtin_function *builtin_function_table;
12296 const NODE *root_node;
12298static inline struct iseq_compile_data *
12299ISEQ_COMPILE_DATA(const rb_iseq_t *iseq)
12301 if (iseq->flags & ((VALUE)RUBY_FL_USER6)) {
12302 return iseq->aux.compile_data;
12305 return ((void *)0);
12309ISEQ_COMPILE_DATA_ALLOC(rb_iseq_t *iseq)
12311 iseq->aux.compile_data = (((struct iseq_compile_data *)ruby_xcalloc((1), sizeof(struct iseq_compile_data))));
12312 iseq->flags |= ((VALUE)RUBY_FL_USER6);
12315ISEQ_COMPILE_DATA_CLEAR(rb_iseq_t *iseq)
12317 iseq->flags &= ~((VALUE)RUBY_FL_USER6);
12318 iseq->aux.compile_data = ((void *)0);
12320static inline rb_iseq_t *
12321iseq_imemo_alloc(void)
12323 return (rb_iseq_t *)rb_imemo_new(imemo_iseq, 0, 0, 0, 0);
12325VALUE rb_iseq_ibf_dump(const rb_iseq_t *iseq, VALUE opt);
12326void rb_ibf_load_iseq_complete(rb_iseq_t *iseq);
12327const rb_iseq_t *rb_iseq_ibf_load(VALUE str);
12328const rb_iseq_t *rb_iseq_ibf_load_bytes(const char *cstr, size_t);
12329VALUE rb_iseq_ibf_load_extra_data(VALUE str);
12330void rb_iseq_init_trace(rb_iseq_t *iseq);
12331int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line, _Bool target_bmethod);
12332int rb_iseq_remove_local_tracepoint_recursively(const rb_iseq_t *iseq, VALUE tpval);
12333const rb_iseq_t *rb_iseq_load_iseq(VALUE fname);
12334unsigned int *rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body);
12335int rb_vm_insn_addr2opcode(const void *addr);
12338VALUE rb_iseq_compile_node(rb_iseq_t *iseq, const NODE *node);
12339VALUE rb_iseq_compile_callback(rb_iseq_t *iseq, const struct rb_iseq_new_with_callback_callback_func * ifunc);
12340VALUE *rb_iseq_original_iseq(const rb_iseq_t *iseq);
12341void rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc,
12342 VALUE locals, VALUE args,
12343 VALUE exception, VALUE body);
12344void rb_iseq_mark_insn_storage(struct iseq_compile_data_storage *arena);
12345VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt);
12346VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc);
12347unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos);
12348int rb_iseq_node_id(const rb_iseq_t *iseq, size_t pos);
12349void rb_iseq_trace_set(const rb_iseq_t *iseq, rb_event_flag_t turnon_events);
12350void rb_iseq_trace_set_all(rb_event_flag_t turnon_events);
12351void rb_iseq_insns_info_encode_positions(const rb_iseq_t *iseq);
12352struct rb_iseq_constant_body *rb_iseq_constant_body_alloc(void);
12353VALUE rb_iseqw_new(const rb_iseq_t *iseq);
12354const rb_iseq_t *rb_iseqw_to_iseq(VALUE iseqw);
12355VALUE rb_iseq_absolute_path(const rb_iseq_t *iseq);
12356int rb_iseq_from_eval_p(const rb_iseq_t *iseq);
12357VALUE rb_iseq_type(const rb_iseq_t *iseq);
12358VALUE rb_iseq_label(const rb_iseq_t *iseq);
12359VALUE rb_iseq_base_label(const rb_iseq_t *iseq);
12360VALUE rb_iseq_first_lineno(const rb_iseq_t *iseq);
12361VALUE rb_iseq_method_name(const rb_iseq_t *iseq);
12362void rb_iseq_code_location(const rb_iseq_t *iseq, int *first_lineno, int *first_column, int *last_lineno, int *last_column);
12363void rb_iseq_remove_coverage_all(void);
12364const rb_iseq_t *rb_method_iseq(VALUE body);
12365const rb_iseq_t *rb_proc_get_iseq(VALUE proc, int *is_proc);
12366struct rb_compile_option_struct {
12367 unsigned int inline_const_cache: 1;
12368 unsigned int peephole_optimization: 1;
12369 unsigned int tailcall_optimization: 1;
12370 unsigned int specialized_instruction: 1;
12371 unsigned int operands_unification: 1;
12372 unsigned int instructions_unification: 1;
12373 unsigned int stack_caching: 1;
12374 unsigned int frozen_string_literal: 1;
12375 unsigned int debug_frozen_string_literal: 1;
12376 unsigned int coverage_enabled: 1;
12379struct iseq_insn_info_entry {
12382 rb_event_flag_t events;
12384struct iseq_catch_table_entry {
12386 CATCH_TYPE_RESCUE = __builtin_choose_expr( __builtin_constant_p(1), ((VALUE)(1)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(1)),
12387 CATCH_TYPE_ENSURE = __builtin_choose_expr( __builtin_constant_p(2), ((VALUE)(2)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(2)),
12388 CATCH_TYPE_RETRY = __builtin_choose_expr( __builtin_constant_p(3), ((VALUE)(3)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(3)),
12389 CATCH_TYPE_BREAK = __builtin_choose_expr( __builtin_constant_p(4), ((VALUE)(4)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(4)),
12390 CATCH_TYPE_REDO = __builtin_choose_expr( __builtin_constant_p(5), ((VALUE)(5)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(5)),
12391 CATCH_TYPE_NEXT = __builtin_choose_expr( __builtin_constant_p(6), ((VALUE)(6)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(6))
12394 unsigned int start;
12399struct iseq_catch_table { unsigned int size; struct iseq_catch_table_entry entries[]; } __attribute__((packed));
12401iseq_catch_table_bytes(int n)
12404 catch_table_entry_size = sizeof(struct iseq_catch_table_entry),
12405 catch_table_entries_max = (0x7fffffff - __builtin_offsetof (struct iseq_catch_table, entries)) / catch_table_entry_size
12407 if (n > catch_table_entries_max) rb_fatal("too large iseq_catch_table - %d", n);
12408 return (int)(__builtin_offsetof (struct iseq_catch_table, entries) +
12409 n * catch_table_entry_size);
12411struct iseq_compile_data_storage {
12412 struct iseq_compile_data_storage *next;
12418 DEFINED_NOT_DEFINED,
12437VALUE rb_iseq_defined_string(enum defined_type type);
12438VALUE rb_iseq_local_variables(const rb_iseq_t *iseq);
12441enum rb_debug_counter_type {
12442RB_DEBUG_COUNTER_mc_inline_hit,
12443RB_DEBUG_COUNTER_mc_inline_miss_klass,
12444RB_DEBUG_COUNTER_mc_inline_miss_invalidated,
12445RB_DEBUG_COUNTER_mc_inline_miss_empty,
12446RB_DEBUG_COUNTER_mc_inline_miss_same_cc,
12447RB_DEBUG_COUNTER_mc_inline_miss_same_cme,
12448RB_DEBUG_COUNTER_mc_inline_miss_same_def,
12449RB_DEBUG_COUNTER_mc_inline_miss_diff,
12450RB_DEBUG_COUNTER_cvar_write_inline_hit,
12451RB_DEBUG_COUNTER_cvar_read_inline_hit,
12452RB_DEBUG_COUNTER_cvar_inline_miss,
12453RB_DEBUG_COUNTER_cvar_class_invalidate,
12454RB_DEBUG_COUNTER_cvar_include_invalidate,
12455RB_DEBUG_COUNTER_mc_cme_complement,
12456RB_DEBUG_COUNTER_mc_cme_complement_hit,
12457RB_DEBUG_COUNTER_mc_search,
12458RB_DEBUG_COUNTER_mc_search_notfound,
12459RB_DEBUG_COUNTER_mc_search_super,
12460RB_DEBUG_COUNTER_ci_packed,
12461RB_DEBUG_COUNTER_ci_kw,
12462RB_DEBUG_COUNTER_ci_nokw,
12463RB_DEBUG_COUNTER_ci_runtime,
12464RB_DEBUG_COUNTER_cc_new,
12465RB_DEBUG_COUNTER_cc_temp,
12466RB_DEBUG_COUNTER_cc_found_in_ccs,
12467RB_DEBUG_COUNTER_cc_not_found_in_ccs,
12468RB_DEBUG_COUNTER_cc_ent_invalidate,
12469RB_DEBUG_COUNTER_cc_cme_invalidate,
12470RB_DEBUG_COUNTER_cc_invalidate_leaf,
12471RB_DEBUG_COUNTER_cc_invalidate_leaf_ccs,
12472RB_DEBUG_COUNTER_cc_invalidate_leaf_callable,
12473RB_DEBUG_COUNTER_cc_invalidate_tree,
12474RB_DEBUG_COUNTER_cc_invalidate_tree_cme,
12475RB_DEBUG_COUNTER_cc_invalidate_tree_callable,
12476RB_DEBUG_COUNTER_cc_invalidate_negative,
12477RB_DEBUG_COUNTER_ccs_free,
12478RB_DEBUG_COUNTER_ccs_maxlen,
12479RB_DEBUG_COUNTER_ccs_found,
12480RB_DEBUG_COUNTER_ccs_not_found,
12481RB_DEBUG_COUNTER_call0_public,
12482RB_DEBUG_COUNTER_call0_other,
12483RB_DEBUG_COUNTER_gccct_hit,
12484RB_DEBUG_COUNTER_gccct_miss,
12485RB_DEBUG_COUNTER_gccct_null,
12486RB_DEBUG_COUNTER_iseq_num,
12487RB_DEBUG_COUNTER_iseq_cd_num,
12488RB_DEBUG_COUNTER_ccf_general,
12489RB_DEBUG_COUNTER_ccf_iseq_setup,
12490RB_DEBUG_COUNTER_ccf_iseq_setup_0start,
12491RB_DEBUG_COUNTER_ccf_iseq_setup_tailcall_0start,
12492RB_DEBUG_COUNTER_ccf_iseq_fix,
12493RB_DEBUG_COUNTER_ccf_iseq_opt,
12494RB_DEBUG_COUNTER_ccf_iseq_kw1,
12495RB_DEBUG_COUNTER_ccf_iseq_kw2,
12496RB_DEBUG_COUNTER_ccf_cfunc,
12497RB_DEBUG_COUNTER_ccf_cfunc_with_frame,
12498RB_DEBUG_COUNTER_ccf_ivar,
12499RB_DEBUG_COUNTER_ccf_attrset,
12500RB_DEBUG_COUNTER_ccf_method_missing,
12501RB_DEBUG_COUNTER_ccf_zsuper,
12502RB_DEBUG_COUNTER_ccf_bmethod,
12503RB_DEBUG_COUNTER_ccf_opt_send,
12504RB_DEBUG_COUNTER_ccf_opt_call,
12505RB_DEBUG_COUNTER_ccf_opt_block_call,
12506RB_DEBUG_COUNTER_ccf_opt_struct_aref,
12507RB_DEBUG_COUNTER_ccf_opt_struct_aset,
12508RB_DEBUG_COUNTER_ccf_super_method,
12509RB_DEBUG_COUNTER_frame_push,
12510RB_DEBUG_COUNTER_frame_push_method,
12511RB_DEBUG_COUNTER_frame_push_block,
12512RB_DEBUG_COUNTER_frame_push_class,
12513RB_DEBUG_COUNTER_frame_push_top,
12514RB_DEBUG_COUNTER_frame_push_cfunc,
12515RB_DEBUG_COUNTER_frame_push_ifunc,
12516RB_DEBUG_COUNTER_frame_push_eval,
12517RB_DEBUG_COUNTER_frame_push_rescue,
12518RB_DEBUG_COUNTER_frame_push_dummy,
12519RB_DEBUG_COUNTER_frame_R2R,
12520RB_DEBUG_COUNTER_frame_R2C,
12521RB_DEBUG_COUNTER_frame_C2C,
12522RB_DEBUG_COUNTER_frame_C2R,
12523RB_DEBUG_COUNTER_ivar_get_ic_hit,
12524RB_DEBUG_COUNTER_ivar_get_ic_miss,
12525RB_DEBUG_COUNTER_ivar_get_ic_miss_serial,
12526RB_DEBUG_COUNTER_ivar_get_ic_miss_unset,
12527RB_DEBUG_COUNTER_ivar_get_ic_miss_noobject,
12528RB_DEBUG_COUNTER_ivar_set_ic_hit,
12529RB_DEBUG_COUNTER_ivar_set_ic_miss,
12530RB_DEBUG_COUNTER_ivar_set_ic_miss_serial,
12531RB_DEBUG_COUNTER_ivar_set_ic_miss_unset,
12532RB_DEBUG_COUNTER_ivar_set_ic_miss_iv_hit,
12533RB_DEBUG_COUNTER_ivar_set_ic_miss_noobject,
12534RB_DEBUG_COUNTER_ivar_get_base,
12535RB_DEBUG_COUNTER_ivar_set_base,
12536RB_DEBUG_COUNTER_lvar_get,
12537RB_DEBUG_COUNTER_lvar_get_dynamic,
12538RB_DEBUG_COUNTER_lvar_set,
12539RB_DEBUG_COUNTER_lvar_set_dynamic,
12540RB_DEBUG_COUNTER_lvar_set_slowpath,
12541RB_DEBUG_COUNTER_gc_count,
12542RB_DEBUG_COUNTER_gc_minor_newobj,
12543RB_DEBUG_COUNTER_gc_minor_malloc,
12544RB_DEBUG_COUNTER_gc_minor_method,
12545RB_DEBUG_COUNTER_gc_minor_capi,
12546RB_DEBUG_COUNTER_gc_minor_stress,
12547RB_DEBUG_COUNTER_gc_major_nofree,
12548RB_DEBUG_COUNTER_gc_major_oldgen,
12549RB_DEBUG_COUNTER_gc_major_shady,
12550RB_DEBUG_COUNTER_gc_major_force,
12551RB_DEBUG_COUNTER_gc_major_oldmalloc,
12552RB_DEBUG_COUNTER_gc_enter_start,
12553RB_DEBUG_COUNTER_gc_enter_mark_continue,
12554RB_DEBUG_COUNTER_gc_enter_sweep_continue,
12555RB_DEBUG_COUNTER_gc_enter_rest,
12556RB_DEBUG_COUNTER_gc_enter_finalizer,
12557RB_DEBUG_COUNTER_gc_isptr_trial,
12558RB_DEBUG_COUNTER_gc_isptr_range,
12559RB_DEBUG_COUNTER_gc_isptr_align,
12560RB_DEBUG_COUNTER_gc_isptr_maybe,
12561RB_DEBUG_COUNTER_obj_newobj,
12562RB_DEBUG_COUNTER_obj_newobj_slowpath,
12563RB_DEBUG_COUNTER_obj_newobj_wb_unprotected,
12564RB_DEBUG_COUNTER_obj_free,
12565RB_DEBUG_COUNTER_obj_promote,
12566RB_DEBUG_COUNTER_obj_wb_unprotect,
12567RB_DEBUG_COUNTER_obj_obj_embed,
12568RB_DEBUG_COUNTER_obj_obj_transient,
12569RB_DEBUG_COUNTER_obj_obj_ptr,
12570RB_DEBUG_COUNTER_obj_str_ptr,
12571RB_DEBUG_COUNTER_obj_str_embed,
12572RB_DEBUG_COUNTER_obj_str_shared,
12573RB_DEBUG_COUNTER_obj_str_nofree,
12574RB_DEBUG_COUNTER_obj_str_fstr,
12575RB_DEBUG_COUNTER_obj_ary_embed,
12576RB_DEBUG_COUNTER_obj_ary_transient,
12577RB_DEBUG_COUNTER_obj_ary_ptr,
12578RB_DEBUG_COUNTER_obj_ary_extracapa,
12579RB_DEBUG_COUNTER_obj_ary_shared_create,
12580RB_DEBUG_COUNTER_obj_ary_shared,
12581RB_DEBUG_COUNTER_obj_ary_shared_root_occupied,
12582RB_DEBUG_COUNTER_obj_hash_empty,
12583RB_DEBUG_COUNTER_obj_hash_1,
12584RB_DEBUG_COUNTER_obj_hash_2,
12585RB_DEBUG_COUNTER_obj_hash_3,
12586RB_DEBUG_COUNTER_obj_hash_4,
12587RB_DEBUG_COUNTER_obj_hash_5_8,
12588RB_DEBUG_COUNTER_obj_hash_g8,
12589RB_DEBUG_COUNTER_obj_hash_null,
12590RB_DEBUG_COUNTER_obj_hash_ar,
12591RB_DEBUG_COUNTER_obj_hash_st,
12592RB_DEBUG_COUNTER_obj_hash_transient,
12593RB_DEBUG_COUNTER_obj_hash_force_convert,
12594RB_DEBUG_COUNTER_obj_struct_embed,
12595RB_DEBUG_COUNTER_obj_struct_transient,
12596RB_DEBUG_COUNTER_obj_struct_ptr,
12597RB_DEBUG_COUNTER_obj_data_empty,
12598RB_DEBUG_COUNTER_obj_data_xfree,
12599RB_DEBUG_COUNTER_obj_data_imm_free,
12600RB_DEBUG_COUNTER_obj_data_zombie,
12601RB_DEBUG_COUNTER_obj_match_under4,
12602RB_DEBUG_COUNTER_obj_match_ge4,
12603RB_DEBUG_COUNTER_obj_match_ge8,
12604RB_DEBUG_COUNTER_obj_match_ptr,
12605RB_DEBUG_COUNTER_obj_iclass_ptr,
12606RB_DEBUG_COUNTER_obj_class_ptr,
12607RB_DEBUG_COUNTER_obj_module_ptr,
12608RB_DEBUG_COUNTER_obj_bignum_ptr,
12609RB_DEBUG_COUNTER_obj_bignum_embed,
12610RB_DEBUG_COUNTER_obj_float,
12611RB_DEBUG_COUNTER_obj_complex,
12612RB_DEBUG_COUNTER_obj_rational,
12613RB_DEBUG_COUNTER_obj_regexp_ptr,
12614RB_DEBUG_COUNTER_obj_file_ptr,
12615RB_DEBUG_COUNTER_obj_symbol,
12616RB_DEBUG_COUNTER_obj_imemo_ment,
12617RB_DEBUG_COUNTER_obj_imemo_iseq,
12618RB_DEBUG_COUNTER_obj_imemo_env,
12619RB_DEBUG_COUNTER_obj_imemo_tmpbuf,
12620RB_DEBUG_COUNTER_obj_imemo_ast,
12621RB_DEBUG_COUNTER_obj_imemo_cref,
12622RB_DEBUG_COUNTER_obj_imemo_svar,
12623RB_DEBUG_COUNTER_obj_imemo_throw_data,
12624RB_DEBUG_COUNTER_obj_imemo_ifunc,
12625RB_DEBUG_COUNTER_obj_imemo_memo,
12626RB_DEBUG_COUNTER_obj_imemo_parser_strterm,
12627RB_DEBUG_COUNTER_obj_imemo_callinfo,
12628RB_DEBUG_COUNTER_obj_imemo_callcache,
12629RB_DEBUG_COUNTER_obj_imemo_constcache,
12630RB_DEBUG_COUNTER_artable_hint_hit,
12631RB_DEBUG_COUNTER_artable_hint_miss,
12632RB_DEBUG_COUNTER_artable_hint_notfound,
12633RB_DEBUG_COUNTER_heap_xmalloc,
12634RB_DEBUG_COUNTER_heap_xrealloc,
12635RB_DEBUG_COUNTER_heap_xfree,
12636RB_DEBUG_COUNTER_theap_alloc,
12637RB_DEBUG_COUNTER_theap_alloc_fail,
12638RB_DEBUG_COUNTER_theap_evacuate,
12639RB_DEBUG_COUNTER_vm_sync_lock,
12640RB_DEBUG_COUNTER_vm_sync_lock_enter,
12641RB_DEBUG_COUNTER_vm_sync_lock_enter_nb,
12642RB_DEBUG_COUNTER_vm_sync_lock_enter_cr,
12643RB_DEBUG_COUNTER_vm_sync_barrier,
12644RB_DEBUG_COUNTER_mjit_exec,
12645RB_DEBUG_COUNTER_mjit_exec_not_added,
12646RB_DEBUG_COUNTER_mjit_exec_not_ready,
12647RB_DEBUG_COUNTER_mjit_exec_not_compiled,
12648RB_DEBUG_COUNTER_mjit_exec_call_func,
12649RB_DEBUG_COUNTER_mjit_add_iseq_to_process,
12650RB_DEBUG_COUNTER_mjit_unload_units,
12651RB_DEBUG_COUNTER_mjit_frame_VM2VM,
12652RB_DEBUG_COUNTER_mjit_frame_VM2JT,
12653RB_DEBUG_COUNTER_mjit_frame_JT2JT,
12654RB_DEBUG_COUNTER_mjit_frame_JT2VM,
12655RB_DEBUG_COUNTER_mjit_cancel,
12656RB_DEBUG_COUNTER_mjit_cancel_ivar_inline,
12657RB_DEBUG_COUNTER_mjit_cancel_exivar_inline,
12658RB_DEBUG_COUNTER_mjit_cancel_send_inline,
12659RB_DEBUG_COUNTER_mjit_cancel_opt_insn,
12660RB_DEBUG_COUNTER_mjit_cancel_invalidate_all,
12661RB_DEBUG_COUNTER_mjit_cancel_leave,
12662RB_DEBUG_COUNTER_mjit_length_unit_queue,
12663RB_DEBUG_COUNTER_mjit_length_active_units,
12664RB_DEBUG_COUNTER_mjit_length_compact_units,
12665RB_DEBUG_COUNTER_mjit_length_stale_units,
12666RB_DEBUG_COUNTER_mjit_compile_failures,
12667 RB_DEBUG_COUNTER_MAX
12669void rb_debug_counter_show_results(const char *msg);
12672size_t ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr);
12673void ruby_debug_counter_reset(void);
12674void ruby_debug_counter_show_at_exit(int enable);
12677struct rb_yjit_options {
12678 _Bool yjit_enabled;
12679 unsigned exec_mem_size;
12680 unsigned call_threshold;
12681 _Bool greedy_versioning;
12682 _Bool no_type_prop;
12683 unsigned max_versions;
12685 _Bool test_backend;
12687_Bool rb_yjit_enabled_p(void);
12688unsigned rb_yjit_call_threshold(void);
12689void rb_yjit_invalidate_all_method_lookup_assumptions(void);
12690void rb_yjit_method_lookup_change(VALUE klass, ID mid);
12691void rb_yjit_cme_invalidate(VALUE cme);
12692void rb_yjit_collect_vm_usage_insn(int insn);
12693void rb_yjit_collect_binding_alloc(void);
12694void rb_yjit_collect_binding_set(void);
12695_Bool rb_yjit_compile_iseq(const rb_iseq_t *iseq, rb_execution_context_t *ec);
12696void rb_yjit_init(struct rb_yjit_options *options);
12697void rb_yjit_bop_redefined(VALUE klass, const rb_method_entry_t *me, enum ruby_basic_operators bop);
12698void rb_yjit_constant_state_changed(void);
12699void rb_yjit_iseq_mark(const struct rb_iseq_constant_body *body);
12700void rb_yjit_iseq_update_references(const struct rb_iseq_constant_body *body);
12701void rb_yjit_iseq_free(const struct rb_iseq_constant_body *body);
12702void rb_yjit_before_ractor_spawn(void);
12703void rb_yjit_constant_ic_update(const rb_iseq_t *const iseq, IC ic);
12704void rb_yjit_tracing_invalidate_all(void);
12705enum rb_mjit_iseq_func {
12706 NOT_ADDED_JIT_ISEQ_FUNC = 0,
12707 NOT_READY_JIT_ISEQ_FUNC = 1,
12708 NOT_COMPILED_JIT_ISEQ_FUNC = 2,
12709 LAST_JIT_ISEQ_FUNC = 3
12711struct mjit_options {
12718 unsigned int min_calls;
12720 int max_cache_size;
12722struct rb_mjit_compile_info {
12723 _Bool disable_ivar_cache;
12724 _Bool disable_exivar_cache;
12725 _Bool disable_send_cache;
12726 _Bool disable_inlining;
12727 _Bool disable_const_cache;
12729typedef VALUE (*mjit_func_t)(rb_execution_context_t *, rb_control_frame_t *);
12732extern struct mjit_options mjit_opts;
12733extern _Bool mjit_call_p;
12734extern void rb_mjit_add_iseq_to_process(const rb_iseq_t *iseq);
12735extern VALUE rb_mjit_wait_call(rb_execution_context_t *ec, struct rb_iseq_constant_body *body);
12736extern struct rb_mjit_compile_info* rb_mjit_iseq_compile_info(const struct rb_iseq_constant_body *body);
12737extern void rb_mjit_recompile_send(const rb_iseq_t *iseq);
12738extern void rb_mjit_recompile_ivar(const rb_iseq_t *iseq);
12739extern void rb_mjit_recompile_exivar(const rb_iseq_t *iseq);
12740extern void rb_mjit_recompile_inlining(const rb_iseq_t *iseq);
12741extern void rb_mjit_recompile_const(const rb_iseq_t *iseq);
12744extern void mjit_cancel_all(const char *reason);
12745extern _Bool mjit_compile(FILE *f, const rb_iseq_t *iseq, const char *funcname, int id);
12746extern void mjit_init(const struct mjit_options *opts);
12747extern void mjit_gc_start_hook(void);
12748extern void mjit_gc_exit_hook(void);
12749extern void mjit_free_iseq(const rb_iseq_t *iseq);
12750extern void mjit_update_references(const rb_iseq_t *iseq);
12751extern void mjit_mark(void);
12752extern struct mjit_cont *mjit_cont_new(rb_execution_context_t *ec);
12753extern void mjit_cont_free(struct mjit_cont *cont);
12754extern void mjit_mark_cc_entries(const struct rb_iseq_constant_body *const body);
12755__attribute__((__noinline__)) static __attribute__((__cold__)) VALUE mjit_exec_slowpath(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body);
12757mjit_exec_slowpath(rb_execution_context_t *ec, const rb_iseq_t *iseq, struct rb_iseq_constant_body *body)
12759 uintptr_t func_i = (uintptr_t)(body->jit_func);
12760 ((__builtin_expect(!!(!!(func_i <= LAST_JIT_ISEQ_FUNC)), 1)) ? ((void)0) : __builtin_unreachable());
12761 switch ((enum rb_mjit_iseq_func)func_i) {
12762 case NOT_ADDED_JIT_ISEQ_FUNC:
12764 if (body->total_calls == mjit_opts.min_calls) {
12765 rb_mjit_add_iseq_to_process(iseq);
12766 if ((__builtin_expect(!!(mjit_opts.wait), 0))) {
12767 return rb_mjit_wait_call(ec, body);
12771 case NOT_READY_JIT_ISEQ_FUNC:
12774 case NOT_COMPILED_JIT_ISEQ_FUNC:
12780 return ((VALUE)RUBY_Qundef);
12783mjit_exec(rb_execution_context_t *ec)
12785 const rb_iseq_t *iseq = ec->cfp->iseq;
12786 struct rb_iseq_constant_body *body = iseq->body;
12787 _Bool yjit_enabled = 0;
12788 if (mjit_call_p || yjit_enabled) {
12789 body->total_calls++;
12791 if (!(mjit_call_p || yjit_enabled))
12792 return ((VALUE)RUBY_Qundef);
12794 mjit_func_t func = body->jit_func;
12795 if (yjit_enabled && func == 0) {
12796 return ((VALUE)RUBY_Qundef);
12798 if ((__builtin_expect(!!((uintptr_t)func <= LAST_JIT_ISEQ_FUNC), 0))) {
12800 return mjit_exec_slowpath(ec, iseq, body);
12804 return func(ec, ec->cfp);
12806void mjit_child_after_fork(void);
12807VALUE mjit_pause(_Bool wait_p);
12808VALUE mjit_resume(void);
12809void mjit_finish(_Bool close_handle_p);
12812typedef struct rb_vm_struct ruby_vm_t;
12813int ruby_vm_destruct(ruby_vm_t *vm);
12814void ruby_vm_at_exit(void(*func)(ruby_vm_t *));
12817enum vm_call_flag_bits {
12818 VM_CALL_ARGS_SPLAT_bit,
12819 VM_CALL_ARGS_BLOCKARG_bit,
12822 VM_CALL_ARGS_SIMPLE_bit,
12823 VM_CALL_BLOCKISEQ_bit,
12825 VM_CALL_KW_SPLAT_bit,
12826 VM_CALL_TAILCALL_bit,
12828 VM_CALL_ZSUPER_bit,
12829 VM_CALL_OPT_SEND_bit,
12830 VM_CALL_KW_SPLAT_MUT_bit,
12833struct rb_callinfo_kwarg {
12837static inline size_t
12838rb_callinfo_kwarg_bytes(int keyword_len)
12840 return rb_size_mul_add_or_raise(
12843 sizeof(struct rb_callinfo_kwarg),
12846struct rb_callinfo {
12848 const struct rb_callinfo_kwarg *kwarg;
12854vm_ci_packed_p(const struct rb_callinfo *ci)
12856 if ((__builtin_expect(!!(((VALUE)ci) & 0x01), 1))) {
12865vm_ci_p(const struct rb_callinfo *ci)
12867 if (vm_ci_packed_p(ci) || imemo_type_p((VALUE)ci, imemo_callinfo)) {
12875vm_ci_mid(const struct rb_callinfo *ci)
12877 if (vm_ci_packed_p(ci)) {
12878 return (((VALUE)ci) >> (1 + 15 + 16)) & ((((VALUE)1)<<32) - 1);
12881 return (ID)ci->mid;
12884static inline unsigned int
12885vm_ci_flag(const struct rb_callinfo *ci)
12887 if (vm_ci_packed_p(ci)) {
12888 return (unsigned int)((((VALUE)ci) >> (1 + 15)) & ((((VALUE)1)<<16) - 1));
12891 return (unsigned int)ci->flag;
12894static inline unsigned int
12895vm_ci_argc(const struct rb_callinfo *ci)
12897 if (vm_ci_packed_p(ci)) {
12898 return (unsigned int)((((VALUE)ci) >> (1)) & ((((VALUE)1)<<15) - 1));
12901 return (unsigned int)ci->argc;
12904static inline const struct rb_callinfo_kwarg *
12905vm_ci_kwarg(const struct rb_callinfo *ci)
12907 if (vm_ci_packed_p(ci)) {
12908 return ((void *)0);
12915vm_ci_dump(const struct rb_callinfo *ci)
12917 if (vm_ci_packed_p(ci)) {
12918 ruby_debug_printf("packed_ci ID:%s flag:%x argc:%u\n",
12919 rb_id2name(vm_ci_mid(ci)), vm_ci_flag(ci), vm_ci_argc(ci));
12922 rb_obj_info_dump_loc((VALUE)(ci), "./vm_callinfo.h", 175, __func__);
12925static inline const struct rb_callinfo *
12926vm_ci_new_(ID mid, unsigned int flag, unsigned int argc, const struct rb_callinfo_kwarg *kwarg, const char *file, int line)
12928 if ((((mid ) & ~((((VALUE)1)<<32) - 1)) ? 0 : ((flag) & ~((((VALUE)1)<<16) - 1)) ? 0 : ((argc) & ~((((VALUE)1)<<15) - 1)) ? 0 : (kwarg) ? 0 : 1)) {
12930 return ((const struct rb_callinfo *) ((((VALUE)(mid )) << (1 + 15 + 16)) | (((VALUE)(flag)) << (1 + 15)) | (((VALUE)(argc)) << (1)) | RUBY_FIXNUM_FLAG));
12932 const _Bool debug = 0;
12933 if (debug) ruby_debug_printf("%s:%d ", file, line);
12934 const struct rb_callinfo *ci = (const struct rb_callinfo *)
12935 rb_imemo_new(imemo_callinfo,
12940 if (debug) rb_obj_info_dump_loc((VALUE)(ci), "./vm_callinfo.h", 216, __func__);
12951static inline const struct rb_callinfo *
12952vm_ci_new_runtime_(ID mid, unsigned int flag, unsigned int argc, const struct rb_callinfo_kwarg *kwarg, const char *file, int line)
12955 return vm_ci_new_(mid, flag, argc, kwarg, file, line);
12958vm_ci_markable(const struct rb_callinfo *ci)
12963 else if (vm_ci_packed_p(ci)) {
12968 return ! RB_FL_ANY_RAW((VALUE)ci, ((VALUE)RUBY_FL_USER4));
12971typedef VALUE (*vm_call_handler)(
12972 struct rb_execution_context_struct *ec,
12973 struct rb_control_frame_struct *cfp,
12974 struct rb_calling_info *calling);
12975struct rb_callcache {
12978 const struct rb_callable_method_entry_struct * const cme_;
12979 const vm_call_handler call_;
12981 const unsigned int attr_index;
12982 const enum method_missing_reason method_missing_reason;
12986static inline const struct rb_callcache *
12987vm_cc_new(VALUE klass,
12988 const struct rb_callable_method_entry_struct *cme,
12989 vm_call_handler call)
12991 const struct rb_callcache *cc = (const struct rb_callcache *)rb_imemo_new(imemo_callcache, (VALUE)cme, (VALUE)call, 0, klass);
12996vm_cc_class_check(const struct rb_callcache *cc, VALUE klass)
13000 return cc->klass == klass;
13003vm_cc_markable(const struct rb_callcache *cc)
13006 return RB_FL_TEST_RAW((VALUE)cc, ((VALUE)RUBY_FL_USER4)) == 0;
13008static inline const struct rb_callable_method_entry_struct *
13009vm_cc_cme(const struct rb_callcache *cc)
13015static inline vm_call_handler
13016vm_cc_call(const struct rb_callcache *cc)
13022static inline unsigned int
13023vm_cc_attr_index(const struct rb_callcache *cc)
13026 return cc->aux_.attr_index;
13028static inline unsigned int
13029vm_cc_cmethod_missing_reason(const struct rb_callcache *cc)
13032 return cc->aux_.method_missing_reason;
13035vm_cc_invalidated_p(const struct rb_callcache *cc)
13037 if (cc->klass && !((vm_cc_cme(cc))->flags & ((VALUE)RUBY_FL_USER9))) {
13045vm_cc_valid_p(const struct rb_callcache *cc, const rb_callable_method_entry_t *cc_cme, VALUE klass)
13048 if (cc->klass == klass && !((cc_cme)->flags & ((VALUE)RUBY_FL_USER9))) {
13055extern const struct rb_callcache *rb_vm_empty_cc(void);
13056extern const struct rb_callcache *rb_vm_empty_cc_for_super(void);
13058vm_cc_call_set(const struct rb_callcache *cc, vm_call_handler call)
13062 *(vm_call_handler *)&cc->call_ = call;
13065vm_cc_attr_index_set(const struct rb_callcache *cc, int index)
13069 *(int *)&cc->aux_.attr_index = index;
13072vm_cc_method_missing_reason_set(const struct rb_callcache *cc, enum method_missing_reason reason)
13076 *(enum method_missing_reason *)&cc->aux_.method_missing_reason = reason;
13079vm_cc_invalidate(const struct rb_callcache *cc)
13084 *(VALUE *)&cc->klass = 0;
13087struct rb_call_data {
13088 const struct rb_callinfo *ci;
13089 const struct rb_callcache *cc;
13091struct rb_class_cc_entries {
13094 const struct rb_callable_method_entry_struct *cme;
13095 struct rb_class_cc_entries_entry {
13096 const struct rb_callinfo *ci;
13097 const struct rb_callcache *cc;
13100void rb_vm_ccs_free(struct rb_class_cc_entries *ccs);
13104VALUE ruby_debug_print_value(int level, int debug_level, const char *header, VALUE v);
13105ID ruby_debug_print_id(int level, int debug_level, const char *header, ID id);
13106struct RNode *ruby_debug_print_node(int level, int debug_level, const char *header, const struct RNode *node);
13107int ruby_debug_print_indent(int level, int debug_level, int indent_level);
13108void ruby_debug_gc_check_func(void);
13109void ruby_set_debug_option(const char *str);
13112extern enum ruby_debug_log_mode {
13113 ruby_debug_log_disabled = 0x00,
13114 ruby_debug_log_memory = 0x01,
13115 ruby_debug_log_stderr = 0x02,
13116 ruby_debug_log_file = 0x04,
13117} ruby_debug_log_mode;
13118__attribute__((__format__(__printf__, 4, 5)))
13119void ruby_debug_log(const char *file, int line, const char *func_name, const char *fmt, ...);
13120void ruby_debug_log_print(unsigned int n);
13121_Bool ruby_debug_log_filter(const char *func_name);
13122typedef long OFFSET;
13123typedef unsigned long lindex_t;
13124typedef VALUE GENTRY;
13125typedef rb_iseq_t *ISEQ;
13128extern VALUE ruby_vm_const_missing_count;
13129extern rb_serial_t ruby_vm_global_constant_state;
13130extern rb_serial_t ruby_vm_class_serial;
13131extern rb_serial_t ruby_vm_global_cvar_state;
13135CC_SET_FASTPATH(const struct rb_callcache *cc, vm_call_handler func, _Bool enabled)
13137 if ((__builtin_expect(!!(enabled), 1))) {
13138 vm_cc_call_set(cc, func);
13141static inline struct vm_throw_data *
13142THROW_DATA_NEW(VALUE val, const rb_control_frame_t *cf, int st)
13144 struct vm_throw_data *obj = (struct vm_throw_data *)rb_imemo_new(imemo_throw_data, val, (VALUE)cf, 0, 0);
13145 obj->throw_state = st;
13149THROW_DATA_VAL(const struct vm_throw_data *obj)
13152 return obj->throw_obj;
13154static inline const rb_control_frame_t *
13155THROW_DATA_CATCH_FRAME(const struct vm_throw_data *obj)
13158 return obj->catch_frame;
13161THROW_DATA_STATE(const struct vm_throw_data *obj)
13164 return obj->throw_state;
13167THROW_DATA_CONSUMED_P(const struct vm_throw_data *obj)
13170 return obj->flags & ((VALUE)RUBY_FL_USER4);
13173THROW_DATA_CATCH_FRAME_SET(struct vm_throw_data *obj, const rb_control_frame_t *cfp)
13176 obj->catch_frame = cfp;
13179THROW_DATA_STATE_SET(struct vm_throw_data *obj, int st)
13182 obj->throw_state = st;
13185THROW_DATA_CONSUMED_SET(struct vm_throw_data *obj)
13187 if (imemo_throw_data_p((VALUE)obj) &&
13188 THROW_DATA_STATE(obj) == RUBY_TAG_BREAK) {
13189 obj->flags |= ((VALUE)RUBY_FL_USER4);
13193vm_call_iseq_optimizable_p(const struct rb_callinfo *ci, const struct rb_callcache *cc)
13195 return !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) &&
13196 !((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED);
13198struct rb_ractor_local_storage_type {
13199 void (*mark)(void *ptr);
13200 void (*free)(void *ptr);
13202typedef struct rb_ractor_local_key_struct *rb_ractor_local_key_t;
13205extern VALUE rb_cRactor;
13206VALUE rb_ractor_stdin(void);
13207VALUE rb_ractor_stdout(void);
13208VALUE rb_ractor_stderr(void);
13209void rb_ractor_stdin_set(VALUE io);
13210void rb_ractor_stdout_set(VALUE io);
13211void rb_ractor_stderr_set(VALUE io);
13212rb_ractor_local_key_t rb_ractor_local_storage_value_newkey(void);
13213VALUE rb_ractor_local_storage_value(rb_ractor_local_key_t key);
13214_Bool rb_ractor_local_storage_value_lookup(rb_ractor_local_key_t key, VALUE *val);
13215void rb_ractor_local_storage_value_set(rb_ractor_local_key_t key, VALUE val);
13216extern const struct rb_ractor_local_storage_type rb_ractor_local_storage_type_free;
13217rb_ractor_local_key_t rb_ractor_local_storage_ptr_newkey(const struct rb_ractor_local_storage_type *type);
13218void *rb_ractor_local_storage_ptr(rb_ractor_local_key_t key);
13219void rb_ractor_local_storage_ptr_set(rb_ractor_local_key_t key, void *ptr);
13220VALUE rb_ractor_make_shareable(VALUE obj);
13221VALUE rb_ractor_make_shareable_copy(VALUE obj);
13225rb_ractor_shareable_p(VALUE obj)
13227 _Bool rb_ractor_shareable_p_continue(VALUE obj);
13228 if (RB_SPECIAL_CONST_P(obj)) {
13231 else if (RB_FL_TEST_RAW((obj), RUBY_FL_SHAREABLE)) {
13235 return rb_ractor_shareable_p_continue(obj);
13238enum rb_ractor_basket_type {
13244 basket_type_deleted,
13245 basket_type_reserved,
13247struct rb_ractor_basket {
13249 enum rb_ractor_basket_type type;
13253struct rb_ractor_queue {
13254 struct rb_ractor_basket *baskets;
13258 unsigned int serial;
13259 unsigned int reserved_cnt;
13261struct rb_ractor_waiting_list {
13264 rb_ractor_t **ractors;
13266struct rb_ractor_sync {
13267 rb_nativethread_lock_t lock;
13268 rb_nativethread_cond_t cond;
13269 struct rb_ractor_queue incoming_queue;
13270 struct rb_ractor_waiting_list taking_ractors;
13271 _Bool incoming_port_closed;
13272 _Bool outgoing_port_closed;
13273 struct ractor_wait {
13274 enum ractor_wait_status {
13276 wait_receiving = 0x01,
13277 wait_taking = 0x02,
13278 wait_yielding = 0x04,
13279 wait_moving = 0x08,
13281 enum ractor_wakeup_status {
13287 wakeup_by_interrupt,
13290 struct rb_ractor_basket yielded_basket;
13291 struct rb_ractor_basket taken_basket;
13294struct rb_ractor_struct {
13295 struct rb_ractor_pub pub;
13296 struct rb_ractor_sync sync;
13297 VALUE receiving_mutex;
13298 _Bool yield_atexit;
13299 rb_nativethread_cond_t barrier_wait_cond;
13301 struct list_head set;
13303 unsigned int blocking_cnt;
13304 unsigned int sleeper;
13305 rb_global_vm_lock_t gvl;
13306 rb_execution_context_t *running_ec;
13309 VALUE thgroup_default;
13312 enum ractor_status {
13318 struct list_node vmlr_node;
13319 st_table *local_storage;
13320 struct rb_id_table *idkey_local_storage;
13326 rb_ractor_newobj_cache_t newobj_cache;
13327 struct gc_mark_func_data_struct {
13329 void (*mark_func)(VALUE v, void *data);
13333rb_ractor_self(const rb_ractor_t *r)
13335 return r->pub.self;
13337rb_ractor_t *rb_ractor_main_alloc(void);
13338void rb_ractor_main_setup(rb_vm_t *vm, rb_ractor_t *main_ractor, rb_thread_t *main_thread);
13339void rb_ractor_atexit(rb_execution_context_t *ec, VALUE result);
13340void rb_ractor_atexit_exception(rb_execution_context_t *ec);
13341void rb_ractor_teardown(rb_execution_context_t *ec);
13342void rb_ractor_receive_parameters(rb_execution_context_t *ec, rb_ractor_t *g, int len, VALUE *ptr);
13343void rb_ractor_send_parameters(rb_execution_context_t *ec, rb_ractor_t *g, VALUE args);
13344VALUE rb_thread_create_ractor(rb_ractor_t *g, VALUE args, VALUE proc);
13345rb_global_vm_lock_t *rb_ractor_gvl(rb_ractor_t *);
13346int rb_ractor_living_thread_num(const rb_ractor_t *);
13347VALUE rb_ractor_thread_list(rb_ractor_t *r);
13348_Bool rb_ractor_p(VALUE rv);
13349void rb_ractor_living_threads_init(rb_ractor_t *r);
13350void rb_ractor_living_threads_insert(rb_ractor_t *r, rb_thread_t *th);
13351void rb_ractor_living_threads_remove(rb_ractor_t *r, rb_thread_t *th);
13352void rb_ractor_blocking_threads_inc(rb_ractor_t *r, const char *file, int line);
13353void rb_ractor_blocking_threads_dec(rb_ractor_t *r, const char *file, int line);
13354void rb_ractor_vm_barrier_interrupt_running_thread(rb_ractor_t *r);
13355void rb_ractor_terminate_interrupt_main_thread(rb_ractor_t *r);
13356void rb_ractor_terminate_all(void);
13357_Bool rb_ractor_main_p_(void);
13358void rb_ractor_finish_marking(void);
13359void rb_ractor_atfork(rb_vm_t *vm, rb_thread_t *th);
13360VALUE rb_ractor_ensure_shareable(VALUE obj, VALUE name);
13363_Bool rb_ractor_shareable_p_continue(VALUE obj);
13364void rb_ractor_local_storage_delkey(rb_ractor_local_key_t key);
13368rb_ractor_main_p(void)
13370 if (ruby_single_main_ractor) {
13374 return rb_ractor_main_p_();
13378rb_ractor_status_p(rb_ractor_t *r, enum ractor_status status)
13380 return r->status_ == status;
13383rb_ractor_sleeper_threads_inc(rb_ractor_t *r)
13385 r->threads.sleeper++;
13388rb_ractor_sleeper_threads_dec(rb_ractor_t *r)
13390 r->threads.sleeper--;
13393rb_ractor_sleeper_threads_clear(rb_ractor_t *r)
13395 r->threads.sleeper = 0;
13398rb_ractor_sleeper_thread_num(rb_ractor_t *r)
13400 return r->threads.sleeper;
13403rb_ractor_thread_switch(rb_ractor_t *cr, rb_thread_t *th)
13405 if (cr->threads.running_ec != th->ec) {
13407 ruby_debug_printf("rb_ractor_thread_switch ec:%p->%p\n",
13408 (void *)cr->threads.running_ec, (void *)th->ec);
13414 if (cr->threads.running_ec != th->ec) {
13415 th->running_time_us = 0;
13417 cr->threads.running_ec = th->ec;
13421rb_ractor_set_current_ec(rb_ractor_t *cr, rb_execution_context_t *ec)
13423 ruby_current_ec = ec;
13424 if (cr->threads.running_ec != ec) {
13426 ruby_debug_printf("rb_ractor_set_current_ec ec:%p->%p\n",
13427 (void *)cr->threads.running_ec, (void *)ec);
13433 cr->threads.running_ec = ec;
13435void rb_vm_ractor_blocking_cnt_inc(rb_vm_t *vm, rb_ractor_t *cr, const char *file, int line);
13436void rb_vm_ractor_blocking_cnt_dec(rb_vm_t *vm, rb_ractor_t *cr, const char *file, int line);
13437static inline uint32_t
13438rb_ractor_id(const rb_ractor_t *r)
13442_Bool rb_vm_locked_p(void);
13443void rb_vm_lock_body(void);
13444void rb_vm_unlock_body(void);
13445struct rb_ractor_struct;
13446void rb_vm_lock_enter_body_cr(struct rb_ractor_struct *cr, unsigned int *lev );
13447void rb_vm_lock_enter_body_nb(unsigned int *lev );
13448void rb_vm_lock_enter_body(unsigned int *lev );
13449void rb_vm_lock_leave_body(unsigned int *lev );
13450void rb_vm_barrier(void);
13451extern struct rb_ractor_struct *ruby_single_main_ractor;
13453rb_multi_ractor_p(void)
13455 if ((__builtin_expect(!!(ruby_single_main_ractor), 1))) {
13464rb_vm_lock(const char *file, int line)
13467 if (rb_multi_ractor_p()) {
13472rb_vm_unlock(const char *file, int line)
13474 if (rb_multi_ractor_p()) {
13475 rb_vm_unlock_body();
13479rb_vm_lock_enter(unsigned int *lev, const char *file, int line)
13482 if (rb_multi_ractor_p()) {
13483 rb_vm_lock_enter_body(lev );
13487rb_vm_lock_enter_nb(unsigned int *lev, const char *file, int line)
13490 if (rb_multi_ractor_p()) {
13491 rb_vm_lock_enter_body_nb(lev );
13495rb_vm_lock_leave(unsigned int *lev, const char *file, int line)
13497 if (rb_multi_ractor_p()) {
13498 rb_vm_lock_leave_body(lev );
13502rb_vm_lock_enter_cr(struct rb_ractor_struct *cr, unsigned int *levp, const char *file, int line)
13505 rb_vm_lock_enter_body_cr(cr, levp );
13508rb_vm_lock_leave_cr(struct rb_ractor_struct *cr, unsigned int *levp, const char *file, int line)
13510 rb_vm_lock_leave_body(levp );
13512struct rb_builtin_function {
13513 const void * const func_ptr;
13516 const char * const name;
13517 void (*compiler)(FILE *, long, unsigned, _Bool);
13519void rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table);
13520static inline void rb_builtin_function_check_arity0(VALUE (*f)(rb_execution_context_t *ec, VALUE self)){}
13521static inline void rb_builtin_function_check_arity1(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE)){}
13522static inline void rb_builtin_function_check_arity2(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE)){}
13523static inline void rb_builtin_function_check_arity3(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE)){}
13524static inline void rb_builtin_function_check_arity4(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE)){}
13525static inline void rb_builtin_function_check_arity5(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE)){}
13526static inline void rb_builtin_function_check_arity6(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
13527static inline void rb_builtin_function_check_arity7(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
13528static inline void rb_builtin_function_check_arity8(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
13529static inline void rb_builtin_function_check_arity9(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
13530static inline void rb_builtin_function_check_arity10(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
13531static inline void rb_builtin_function_check_arity11(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
13532static inline void rb_builtin_function_check_arity12(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
13533static inline void rb_builtin_function_check_arity13(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
13534static inline void rb_builtin_function_check_arity14(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
13535static inline void rb_builtin_function_check_arity15(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}static inline
13536__attribute__((__pure__)) VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index);static inline
13537VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index);
13538__attribute__((__pure__)) static inline VALUE rb_vm_lvar(rb_execution_context_t *ec, int index);
13540rb_vm_lvar(rb_execution_context_t *ec, int index)
13542 return ec->cfp->ep[index];
13544struct builtin_binary {
13545 const char *feature;
13546 const unsigned char *bin;
13549struct ruby_dtrace_method_hook_args {
13550 const char *classname;
13551 const char *methodname;
13552 const char *filename;
13554 volatile VALUE klass;
13555 volatile VALUE name;
13559__attribute__((__noinline__)) int rb_dtrace_setup(rb_execution_context_t *, VALUE, ID, struct ruby_dtrace_method_hook_args *);
13562VALUE rb_str_concat_literals(size_t, const VALUE*);
13563__attribute__ ((__visibility__("default"))) extern
13564VALUE rb_vm_exec(rb_execution_context_t *, _Bool);
13565__attribute__((__pure__)) static inline const VALUE *VM_EP_LEP(const VALUE *);
13566static inline const VALUE *
13567VM_EP_LEP(const VALUE *ep)
13569 while (!VM_ENV_LOCAL_P(ep)) {
13570 ep = VM_ENV_PREV_EP(ep);
13574static inline const rb_control_frame_t *
13575rb_vm_search_cf_from_ep(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE * const ep)
13578 return ((void *)0);
13581 const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec);
13582 while (cfp < eocfp) {
13583 if (cfp->ep == ep) {
13588 return ((void *)0);
13592rb_vm_ep_local_ep(const VALUE *ep)
13594 return VM_EP_LEP(ep);
13596__attribute__((__pure__)) static inline const VALUE *VM_CF_LEP(const rb_control_frame_t * const cfp);
13597static inline const VALUE *
13598VM_CF_LEP(const rb_control_frame_t * const cfp)
13600 return VM_EP_LEP(cfp->ep);
13602static inline const VALUE *
13603VM_CF_PREV_EP(const rb_control_frame_t * const cfp)
13605 return VM_ENV_PREV_EP(cfp->ep);
13607__attribute__((__pure__)) static inline VALUE VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp);
13609VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp)
13611 const VALUE *ep = VM_CF_LEP(cfp);
13612 return VM_ENV_BLOCK_HANDLER(ep);
13615rb_vm_cframe_keyword_p(const rb_control_frame_t *cfp)
13617 return VM_FRAME_CFRAME_KW_P(cfp);
13620rb_vm_frame_block_handler(const rb_control_frame_t *cfp)
13622 return VM_CF_BLOCK_HANDLER(cfp);
13624static struct rb_captured_block *
13625VM_CFP_TO_CAPTURED_BLOCK(const rb_control_frame_t *cfp)
13628 return (struct rb_captured_block *)&cfp->self;
13630static rb_control_frame_t *
13631VM_CAPTURED_BLOCK_TO_CFP(const struct rb_captured_block *captured)
13633 rb_control_frame_t *cfp = ((rb_control_frame_t *)((VALUE *)(captured) - 3));
13639VM_BH_FROM_CFP_P(VALUE block_handler, const rb_control_frame_t *cfp)
13641 const struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(cfp);
13642 return ((void *)((block_handler) & ~0x03)) == captured;
13645vm_passed_block_handler(rb_execution_context_t *ec)
13647 VALUE block_handler = ec->passed_block_handler;
13648 ec->passed_block_handler = 0;
13649 vm_block_handler_verify(block_handler);
13650 return block_handler;
13653vm_cref_new0(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval, int use_prev_prev, int singleton)
13655 VALUE refinements = ((VALUE)RUBY_Qnil);
13656 int omod_shared = 0;
13659 rb_scope_visibility_t visi;
13662 scope_visi.visi.method_visi = visi;
13663 scope_visi.visi.module_func = module_func;
13664 if (prev_cref != ((void *)0) && prev_cref != (void *)1 ) {
13665 refinements = CREF_REFINEMENTS(prev_cref);
13666 if (!RB_NIL_P(refinements)) {
13668 CREF_OMOD_SHARED_SET(prev_cref);
13672 cref = (rb_cref_t *)rb_imemo_new(imemo_cref, klass, (VALUE)(use_prev_prev ? CREF_NEXT(prev_cref) : prev_cref), scope_visi.value, refinements);
13673 if (pushed_by_eval) CREF_PUSHED_BY_EVAL_SET(cref);
13674 if (omod_shared) CREF_OMOD_SHARED_SET(cref);
13675 if (singleton) CREF_SINGLETON_SET(cref);
13679vm_cref_new(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval, int singleton)
13681 return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 0, singleton);
13684vm_cref_new_use_prev(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval)
13686 return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 1, 0);
13689ref_delete_symkey(VALUE key, VALUE value, VALUE unused)
13691 return RB_SYMBOL_P(key) ? ST_DELETE : ST_CONTINUE;
13694vm_cref_dup(const rb_cref_t *cref)
13696 const rb_scope_visibility_t *visi = CREF_SCOPE_VISI(cref);
13697 rb_cref_t *next_cref = CREF_NEXT(cref), *new_cref;
13698 int pushed_by_eval = CREF_PUSHED_BY_EVAL(cref);
13699 int singleton = CREF_SINGLETON(cref);
13700 new_cref = vm_cref_new(cref->klass_or_self, visi->method_visi, visi->module_func, next_cref, pushed_by_eval, singleton);
13701 if (!RB_NIL_P(CREF_REFINEMENTS(cref))) {
13702 VALUE ref = rb_hash_dup(CREF_REFINEMENTS(cref));
13703 rb_hash_foreach(ref, ref_delete_symkey, ((VALUE)RUBY_Qnil));
13704 CREF_REFINEMENTS_SET(new_cref, ref);
13705 CREF_OMOD_SHARED_UNSET(new_cref);
13710rb_vm_cref_dup_without_refinements(const rb_cref_t *cref)
13712 const rb_scope_visibility_t *visi = CREF_SCOPE_VISI(cref);
13713 rb_cref_t *next_cref = CREF_NEXT(cref), *new_cref;
13714 int pushed_by_eval = CREF_PUSHED_BY_EVAL(cref);
13715 int singleton = CREF_SINGLETON(cref);
13716 new_cref = vm_cref_new(cref->klass_or_self, visi->method_visi, visi->module_func, next_cref, pushed_by_eval, singleton);
13717 if (!RB_NIL_P(CREF_REFINEMENTS(cref))) {
13718 CREF_REFINEMENTS_SET(new_cref, ((VALUE)RUBY_Qnil));
13719 CREF_OMOD_SHARED_UNSET(new_cref);
13724vm_cref_new_toplevel(rb_execution_context_t *ec)
13726 rb_cref_t *cref = vm_cref_new(rb_cObject, METHOD_VISI_PRIVATE , 0, ((void *)0), 0, 0);
13727 VALUE top_wrapper = rb_ec_thread_ptr(ec)->top_wrapper;
13729 cref = vm_cref_new(top_wrapper, METHOD_VISI_PRIVATE, 0, cref, 0, 0);
13734rb_vm_cref_new_toplevel(void)
13736 return vm_cref_new_toplevel(rb_current_execution_context(1));
13739vm_cref_dump(const char *mesg, const rb_cref_t *cref)
13741 ruby_debug_printf("vm_cref_dump: %s (%p)\n", mesg, (void *)cref);
13743 ruby_debug_printf("= cref| klass: %s\n", RSTRING_PTR(rb_class_path(CREF_CLASS(cref))));
13744 cref = CREF_NEXT(cref);
13748rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep)
13750 *((const VALUE **)&dst->as.captured.ep) = ep;
13751 (rb_obj_written((VALUE)(obj), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(VM_ENV_ENVVAL(ep)), "./vm.c", 353));
13754vm_bind_update_env(VALUE bindval, rb_binding_t *bind, VALUE envval)
13756 const rb_env_t *env = (rb_env_t *)envval;
13757 rb_obj_write((VALUE)(bindval), __extension__({
13759 ; __typeof__((VALUE *)(&bind->block.as.captured.code.iseq)) unaligned_member_access_result = ((VALUE *)(&bind->block.as.captured.code.iseq));
13760 ; unaligned_member_access_result; }), (VALUE)(env->iseq), "./vm.c", 360);
13761 rb_vm_block_ep_update(bindval, &bind->block, env->ep);
13763static VALUE vm_make_env_object(const rb_execution_context_t *ec, rb_control_frame_t *cfp);
13764extern VALUE rb_vm_invoke_bmethod(rb_execution_context_t *ec, rb_proc_t *proc, VALUE self,
13765 int argc, const VALUE *argv, int kw_splat, VALUE block_handler,
13766 const rb_callable_method_entry_t *me);
13767static VALUE vm_invoke_proc(rb_execution_context_t *ec, rb_proc_t *proc, VALUE self, int argc, const VALUE *argv, int kw_splat, VALUE block_handler);
13769 CONST_DEPRECATED = 0x100,
13770 CONST_VISIBILITY_MASK = 0xff,
13771 CONST_PUBLIC = 0x00,
13773 CONST_VISIBILITY_MAX
13775typedef struct rb_const_entry_struct {
13776 rb_const_flag_t flag;
13781VALUE rb_mod_private_constant(int argc, const VALUE *argv, VALUE obj);
13782VALUE rb_mod_public_constant(int argc, const VALUE *argv, VALUE obj);
13783VALUE rb_mod_deprecate_constant(int argc, const VALUE *argv, VALUE obj);
13784void rb_free_const_table(struct rb_id_table *tbl);
13785VALUE rb_const_source_location(VALUE, ID);
13788int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag);
13789rb_const_entry_t *rb_const_lookup(VALUE klass, ID id);
13790VALUE rb_public_const_get_at(VALUE klass, ID id);
13791VALUE rb_public_const_get_from(VALUE klass, ID id);
13792int rb_public_const_defined_from(VALUE klass, ID id);
13793VALUE rb_const_source_location_at(VALUE, ID);
13800 cmp_optimizable_count
13802struct cmp_opt_data {
13803 unsigned int opt_methods;
13804 unsigned int opt_inited;
13806VALUE rb_invcmp(VALUE, VALUE);
13807struct ar_table_struct;
13808typedef unsigned char ar_hint_t;
13809enum ruby_rhash_flags {
13810 RHASH_PASS_AS_KEYWORDS = ((VALUE)RUBY_FL_USER1),
13811 RHASH_PROC_DEFAULT = ((VALUE)RUBY_FL_USER2),
13812 RHASH_ST_TABLE_FLAG = ((VALUE)RUBY_FL_USER3),
13813 RHASH_AR_TABLE_SIZE_MASK = (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)|((VALUE)RUBY_FL_USER7)),
13814 RHASH_AR_TABLE_SIZE_SHIFT = (((VALUE)RUBY_FL_USHIFT)+4),
13815 RHASH_AR_TABLE_BOUND_MASK = (((VALUE)RUBY_FL_USER8)|((VALUE)RUBY_FL_USER9)|((VALUE)RUBY_FL_USER10)|((VALUE)RUBY_FL_USER11)),
13816 RHASH_AR_TABLE_BOUND_SHIFT = (((VALUE)RUBY_FL_USHIFT)+8),
13817 RHASH_TRANSIENT_FLAG = ((VALUE)RUBY_FL_USER12),
13818 RHASH_LEV_SHIFT = (((VALUE)RUBY_FL_USHIFT) + 13),
13819 RHASH_LEV_MAX = 127,
13822 struct RBasic basic;
13825 struct ar_table_struct *ar;
13827 const VALUE ifnone;
13833void rb_hash_st_table_set(VALUE hash, st_table *st);
13834VALUE rb_hash_default_value(VALUE hash, VALUE key);
13835VALUE rb_hash_set_default_proc(VALUE hash, VALUE proc);
13836long rb_dbl_long_hash(double d);
13837st_table *rb_init_identtable(void);
13838VALUE rb_to_hash_type(VALUE obj);
13839VALUE rb_hash_key_str(VALUE);
13840VALUE rb_hash_values(VALUE hash);
13841VALUE rb_hash_rehash(VALUE hash);
13842int rb_hash_add_new_element(VALUE hash, VALUE key, VALUE val);
13843VALUE rb_hash_set_pair(VALUE hash, VALUE pair);
13844int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval);
13845int rb_hash_stlike_foreach_with_replace(VALUE hash, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg);
13846int rb_hash_stlike_update(VALUE hash, st_data_t key, st_update_callback_func *func, st_data_t arg);
13847extern st_table *rb_hash_st_table(VALUE hash);
13848VALUE rb_ident_hash_new_with_size(st_index_t size);
13849static inline unsigned RHASH_AR_TABLE_SIZE_RAW(VALUE h);
13850static inline VALUE RHASH_IFNONE(VALUE h);
13851static inline size_t RHASH_SIZE(VALUE h);
13852static inline _Bool RHASH_EMPTY_P(VALUE h);
13853static inline _Bool RHASH_AR_TABLE_P(VALUE h);
13854static inline _Bool RHASH_ST_TABLE_P(VALUE h);
13855static inline struct ar_table_struct *RHASH_AR_TABLE(VALUE h);
13856static inline st_table *RHASH_ST_TABLE(VALUE h);
13857static inline size_t RHASH_ST_SIZE(VALUE h);
13858static inline void RHASH_ST_CLEAR(VALUE h);
13859static inline _Bool RHASH_TRANSIENT_P(VALUE h);
13860static inline void RHASH_SET_TRANSIENT_FLAG(VALUE h);
13861static inline void RHASH_UNSET_TRANSIENT_FLAG(VALUE h);
13864VALUE rb_hash_delete_entry(VALUE hash, VALUE key);
13865VALUE rb_ident_hash_new(void);
13866int rb_hash_stlike_foreach(VALUE hash, st_foreach_callback_func *func, st_data_t arg);
13871VALUE rb_hash_new_with_size(st_index_t size);
13872VALUE rb_hash_resurrect(VALUE hash);
13873int rb_hash_stlike_lookup(VALUE hash, st_data_t key, st_data_t *pval);
13874VALUE rb_hash_keys(VALUE hash);
13875VALUE rb_hash_has_key(VALUE hash, VALUE key);
13876VALUE rb_hash_compare_by_id_p(VALUE hash);
13877st_table *rb_hash_tbl_raw(VALUE hash, const char *file, int line);
13880VALUE rb_hash_compare_by_id(VALUE hash);
13882RHASH_AR_TABLE_P(VALUE h)
13884 return ! RB_FL_TEST_RAW(h, RHASH_ST_TABLE_FLAG);
13886static inline struct ar_table_struct *
13887RHASH_AR_TABLE(VALUE h)
13889 return ((struct RHash *)(h))->as.ar;
13891static inline st_table *
13892RHASH_ST_TABLE(VALUE h)
13894 return ((struct RHash *)(h))->as.st;
13897RHASH_IFNONE(VALUE h)
13899 return ((struct RHash *)(h))->ifnone;
13901static inline size_t
13904 if (RHASH_AR_TABLE_P(h)) {
13905 return RHASH_AR_TABLE_SIZE_RAW(h);
13908 return RHASH_ST_SIZE(h);
13912RHASH_EMPTY_P(VALUE h)
13914 return RHASH_SIZE(h) == 0;
13917RHASH_ST_TABLE_P(VALUE h)
13919 return ! RHASH_AR_TABLE_P(h);
13921static inline size_t
13922RHASH_ST_SIZE(VALUE h)
13924 return RHASH_ST_TABLE(h)->num_entries;
13927RHASH_ST_CLEAR(VALUE h)
13929 RB_FL_UNSET_RAW(h, RHASH_ST_TABLE_FLAG);
13930 ((struct RHash *)(h))->as.ar = ((void *)0);
13932static inline unsigned
13933RHASH_AR_TABLE_SIZE_RAW(VALUE h)
13935 VALUE ret = RB_FL_TEST_RAW(h, RHASH_AR_TABLE_SIZE_MASK);
13936 ret >>= RHASH_AR_TABLE_SIZE_SHIFT;
13937 return (unsigned)ret;
13940RHASH_TRANSIENT_P(VALUE h)
13942 return RB_FL_TEST_RAW(h, RHASH_TRANSIENT_FLAG);
13945RHASH_SET_TRANSIENT_FLAG(VALUE h)
13947 RB_FL_SET_RAW(h, RHASH_TRANSIENT_FLAG);
13950RHASH_UNSET_TRANSIENT_FLAG(VALUE h)
13952 RB_FL_UNSET_RAW(h, RHASH_TRANSIENT_FLAG);
13954enum rb_int_parse_flags {
13955 RB_INT_PARSE_SIGN = 0x01,
13956 RB_INT_PARSE_UNDERSCORE = 0x02,
13957 RB_INT_PARSE_PREFIX = 0x04,
13958 RB_INT_PARSE_ALL = 0x07,
13959 RB_INT_PARSE_DEFAULT = 0x07,
13962 struct RBasic basic;
13966 unsigned int *digits;
13968 unsigned int ary[(8*3/4)];
13971extern const char ruby_digitmap[];
13972double rb_big_fdiv_double(VALUE x, VALUE y);
13973VALUE rb_big_uminus(VALUE x);
13974VALUE rb_big_hash(VALUE);
13975VALUE rb_big_odd_p(VALUE);
13976VALUE rb_big_even_p(VALUE);
13977size_t rb_big_size(VALUE);
13978VALUE rb_integer_float_cmp(VALUE x, VALUE y);
13979VALUE rb_integer_float_eq(VALUE x, VALUE y);
13980VALUE rb_str_convert_to_inum(VALUE str, int base, int badcheck, int raise_exception);
13981VALUE rb_big_comp(VALUE x);
13982VALUE rb_big_aref(VALUE x, VALUE y);
13983VALUE rb_big_abs(VALUE x);
13984VALUE rb_big_size_m(VALUE big);
13985VALUE rb_big_bit_length(VALUE big);
13986VALUE rb_big_remainder(VALUE x, VALUE y);
13987VALUE rb_big_gt(VALUE x, VALUE y);
13988VALUE rb_big_ge(VALUE x, VALUE y);
13989VALUE rb_big_lt(VALUE x, VALUE y);
13990VALUE rb_big_le(VALUE x, VALUE y);
13991VALUE rb_int_powm(int const argc, VALUE * const argv, VALUE const num);
13992VALUE rb_big_isqrt(VALUE n);
13993static inline _Bool BIGNUM_SIGN(VALUE b);
13994static inline _Bool BIGNUM_POSITIVE_P(VALUE b);
13995static inline _Bool BIGNUM_NEGATIVE_P(VALUE b);
13996static inline void BIGNUM_SET_SIGN(VALUE b, _Bool sign);
13997static inline void BIGNUM_NEGATE(VALUE b);
13998static inline size_t BIGNUM_LEN(VALUE b);
13999static inline unsigned int *BIGNUM_DIGITS(VALUE b);
14000static inline int BIGNUM_LENINT(VALUE b);
14001static inline _Bool BIGNUM_EMBED_P(VALUE b);
14004VALUE rb_big_mul_normal(VALUE x, VALUE y);
14005VALUE rb_big_mul_balance(VALUE x, VALUE y);
14006VALUE rb_big_mul_karatsuba(VALUE x, VALUE y);
14007VALUE rb_big_mul_toom3(VALUE x, VALUE y);
14008VALUE rb_big_sq_fast(VALUE x);
14009VALUE rb_big_divrem_normal(VALUE x, VALUE y);
14010VALUE rb_big2str_poweroftwo(VALUE x, int base);
14011VALUE rb_big2str_generic(VALUE x, int base);
14012VALUE rb_str2big_poweroftwo(VALUE arg, int base, int badcheck);
14013VALUE rb_str2big_normal(VALUE arg, int base, int badcheck);
14014VALUE rb_str2big_karatsuba(VALUE arg, int base, int badcheck);
14015VALUE rb_big_mul_gmp(VALUE x, VALUE y);
14016VALUE rb_big_divrem_gmp(VALUE x, VALUE y);
14017VALUE rb_big2str_gmp(VALUE x, int base);
14018VALUE rb_str2big_gmp(VALUE arg, int base, int badcheck);
14019VALUE rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits, int base, int flags);
14024VALUE rb_int128t2big(__int128 n);
14028BIGNUM_SIGN(VALUE b)
14030 return RB_FL_TEST_RAW(b, ((VALUE)RUBY_FL_USER1));
14033BIGNUM_POSITIVE_P(VALUE b)
14035 return BIGNUM_SIGN(b);
14038BIGNUM_NEGATIVE_P(VALUE b)
14040 return ! BIGNUM_POSITIVE_P(b);
14043BIGNUM_SET_SIGN(VALUE b, _Bool sign)
14046 RB_FL_SET_RAW(b, ((VALUE)RUBY_FL_USER1));
14049 RB_FL_UNSET_RAW(b, ((VALUE)RUBY_FL_USER1));
14053BIGNUM_NEGATE(VALUE b)
14055 RB_FL_REVERSE_RAW(b, ((VALUE)RUBY_FL_USER1));
14057static inline size_t
14060 if (! BIGNUM_EMBED_P(b)) {
14061 return ((struct RBignum *)(b))->as.heap.len;
14064 size_t ret = ((struct RBasic *)(b))->flags;
14065 ret &= (~(~(VALUE)0U << 3) << (((VALUE)RUBY_FL_USHIFT)+3));
14066 ret >>= (((VALUE)RUBY_FL_USHIFT)+3);
14071BIGNUM_LENINT(VALUE b)
14073 return rb_long2int_inline(BIGNUM_LEN(b));
14075static inline unsigned int *
14076BIGNUM_DIGITS(VALUE b)
14078 if (BIGNUM_EMBED_P(b)) {
14079 return ((struct RBignum *)(b))->as.ary;
14082 return ((struct RBignum *)(b))->as.heap.digits;
14086BIGNUM_EMBED_P(VALUE b)
14088 return RB_FL_TEST_RAW(b, ((VALUE)((VALUE)RUBY_FL_USER2)));
14090static inline uint16_t ruby_swap16(uint16_t);
14091static inline uint32_t ruby_swap32(uint32_t);
14092static inline uint64_t ruby_swap64(uint64_t);
14093static inline unsigned nlz_int(unsigned x);
14094static inline unsigned nlz_long(unsigned long x);
14095static inline unsigned nlz_long_long(unsigned long long x);
14096static inline unsigned nlz_intptr(uintptr_t x);
14097static inline unsigned nlz_int32(uint32_t x);
14098static inline unsigned nlz_int64(uint64_t x);
14099static inline unsigned nlz_int128(unsigned __int128 x);
14100static inline unsigned rb_popcount32(uint32_t x);
14101static inline unsigned rb_popcount64(uint64_t x);
14102static inline unsigned rb_popcount_intptr(uintptr_t x);
14103static inline int ntz_int32(uint32_t x);
14104static inline int ntz_int64(uint64_t x);
14105static inline int ntz_intptr(uintptr_t x);
14106static inline VALUE RUBY_BIT_ROTL(VALUE, int);
14107static inline VALUE RUBY_BIT_ROTR(VALUE, int);
14108static inline uint16_t
14109ruby_swap16(uint16_t x)
14111 return __builtin_bswap16(x);
14113static inline uint32_t
14114ruby_swap32(uint32_t x)
14116 return __builtin_bswap32(x);
14118static inline uint64_t
14119ruby_swap64(uint64_t x)
14121 return __builtin_bswap64(x);
14123static inline unsigned int
14124nlz_int32(uint32_t x)
14126 __extension__ _Static_assert(sizeof(int) * 8 == 32, "sizeof_int" ": " "sizeof(int) * CHAR_BIT == 32");
14127 return x ? (unsigned int)__builtin_clz(x) : 32;
14129static inline unsigned int
14130nlz_int64(uint64_t x)
14135 else if (sizeof(long) * 8 == 64) {
14136 return (unsigned int)__builtin_clzl((unsigned long)x);
14138 else if (sizeof(long long) * 8 == 64) {
14139 return (unsigned int)__builtin_clzll((unsigned long long)x);
14142 __builtin_unreachable();
14145static inline unsigned int
14146nlz_int128(unsigned __int128 x)
14148 uint64_t y = (uint64_t)(x >> 64);
14153 return (unsigned int)nlz_int64(x) + 64;
14156 return (unsigned int)nlz_int64(y);
14159static inline unsigned int
14160nlz_int(unsigned int x)
14162 if (sizeof(unsigned int) * 8 == 32) {
14163 return nlz_int32((uint32_t)x);
14165 else if (sizeof(unsigned int) * 8 == 64) {
14166 return nlz_int64((uint64_t)x);
14169 __builtin_unreachable();
14172static inline unsigned int
14173nlz_long(unsigned long x)
14175 if (sizeof(unsigned long) * 8 == 32) {
14176 return nlz_int32((uint32_t)x);
14178 else if (sizeof(unsigned long) * 8 == 64) {
14179 return nlz_int64((uint64_t)x);
14182 __builtin_unreachable();
14185static inline unsigned int
14186nlz_long_long(unsigned long long x)
14188 if (sizeof(unsigned long long) * 8 == 64) {
14189 return nlz_int64((uint64_t)x);
14191 else if (sizeof(unsigned long long) * 8 == 128) {
14192 return nlz_int128((unsigned __int128)x);
14195 __builtin_unreachable();
14198static inline unsigned int
14199nlz_intptr(uintptr_t x)
14201 if (sizeof(uintptr_t) == sizeof(unsigned int)) {
14202 return nlz_int((unsigned int)x);
14204 if (sizeof(uintptr_t) == sizeof(unsigned long)) {
14205 return nlz_long((unsigned long)x);
14207 if (sizeof(uintptr_t) == sizeof(unsigned long long)) {
14208 return nlz_long_long((unsigned long long)x);
14211 __builtin_unreachable();
14214static inline unsigned int
14215rb_popcount32(uint32_t x)
14217 __extension__ _Static_assert(sizeof(int) * 8 >= 32, "sizeof_int" ": " "sizeof(int) * CHAR_BIT >= 32");
14218 return (unsigned int)__builtin_popcount(x);
14220static inline unsigned int
14221rb_popcount64(uint64_t x)
14223 if (sizeof(long) * 8 == 64) {
14224 return (unsigned int)__builtin_popcountl((unsigned long)x);
14226 else if (sizeof(long long) * 8 == 64) {
14227 return (unsigned int)__builtin_popcountll((unsigned long long)x);
14230 __builtin_unreachable();
14233static inline unsigned int
14234rb_popcount_intptr(uintptr_t x)
14236 if (sizeof(uintptr_t) * 8 == 64) {
14237 return rb_popcount64((uint64_t)x);
14239 else if (sizeof(uintptr_t) * 8 == 32) {
14240 return rb_popcount32((uint32_t)x);
14243 __builtin_unreachable();
14247ntz_int32(uint32_t x)
14249 __extension__ _Static_assert(sizeof(int) * 8 == 32, "sizeof_int" ": " "sizeof(int) * CHAR_BIT == 32");
14250 return x ? (unsigned)__builtin_ctz(x) : 32;
14253ntz_int64(uint64_t x)
14258 else if (sizeof(long) * 8 == 64) {
14259 return (unsigned)__builtin_ctzl((unsigned long)x);
14261 else if (sizeof(long long) * 8 == 64) {
14262 return (unsigned)__builtin_ctzll((unsigned long long)x);
14265 __builtin_unreachable();
14269ntz_intptr(uintptr_t x)
14271 if (sizeof(uintptr_t) * 8 == 64) {
14272 return ntz_int64((uint64_t)x);
14274 else if (sizeof(uintptr_t) * 8 == 32) {
14275 return ntz_int32((uint32_t)x);
14278 __builtin_unreachable();
14282RUBY_BIT_ROTL(VALUE v, int n)
14284 const int m = (sizeof(VALUE) * 8) - 1;
14285 return (v << (n & m)) | (v >> (-n & m));
14288RUBY_BIT_ROTR(VALUE v, int n)
14290 const int m = (sizeof(VALUE) * 8) - 1;
14291 return (v << (-n & m)) | (v >> (n & m));
14293VALUE rb_int128t2big(__int128 n);
14294static inline long rb_overflowed_fix_to_int(long x);
14295static inline VALUE rb_fix_plus_fix(VALUE x, VALUE y);
14296static inline VALUE rb_fix_minus_fix(VALUE x, VALUE y);
14297static inline VALUE rb_fix_mul_fix(VALUE x, VALUE y);
14298static inline void rb_fix_divmod_fix(VALUE x, VALUE y, VALUE *divp, VALUE *modp);
14299static inline VALUE rb_fix_div_fix(VALUE x, VALUE y);
14300static inline VALUE rb_fix_mod_fix(VALUE x, VALUE y);
14301static inline _Bool FIXNUM_POSITIVE_P(VALUE num);
14302static inline _Bool FIXNUM_NEGATIVE_P(VALUE num);
14303static inline _Bool FIXNUM_ZERO_P(VALUE num);
14305rb_overflowed_fix_to_int(long x)
14307 return (long)((unsigned long)(x >> 1) ^ (1LU << (8 * 8 - 1)));
14310rb_fix_plus_fix(VALUE x, VALUE y)
14313 if (__builtin_add_overflow((long)x, (long)y-1, &lz)) {
14314 return rb_int2big(rb_overflowed_fix_to_int(lz));
14321rb_fix_minus_fix(VALUE x, VALUE y)
14324 if (__builtin_sub_overflow((long)x, (long)y-1, &lz)) {
14325 return rb_int2big(rb_overflowed_fix_to_int(lz));
14332rb_fix_mul_fix(VALUE x, VALUE y)
14334 long lx = rb_fix2long(x);
14335 long ly = rb_fix2long(y);
14336 return (((((__int128)lx * (__int128)ly) < (0x7fffffffffffffffL / 2) + 1) && (((__int128)lx * (__int128)ly) >= ((-0x7fffffffffffffffL - 1L) / 2))) ? RB_INT2FIX((__int128)lx * (__int128)ly) : rb_int128t2big((__int128)lx * (__int128)ly));
14339rb_fix_divmod_fix(VALUE a, VALUE b, VALUE *divp, VALUE *modp)
14341 long x = rb_fix2long(a);
14342 long y = rb_fix2long(b);
14344 if (x == ((-0x7fffffffffffffffL - 1L) / 2) && y == -1) {
14345 if (divp) *divp = rb_long2num_inline(-((-0x7fffffffffffffffL - 1L) / 2));
14346 if (modp) *modp = RB_INT2FIX(0);
14351 if (y > 0 ? mod < 0 : mod > 0) {
14355 if (divp) *divp = RB_INT2FIX(div);
14356 if (modp) *modp = RB_INT2FIX(mod);
14359rb_fix_div_fix(VALUE x, VALUE y)
14362 rb_fix_divmod_fix(x, y, &div, ((void *)0));
14366rb_fix_mod_fix(VALUE x, VALUE y)
14369 rb_fix_divmod_fix(x, y, ((void *)0), &mod);
14373FIXNUM_POSITIVE_P(VALUE num)
14375 return (long)num > (long)__builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0));
14378FIXNUM_NEGATIVE_P(VALUE num)
14380 return (long)num < 0;
14383FIXNUM_ZERO_P(VALUE num)
14385 return num == __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0));
14387enum ruby_num_rounding_mode {
14388 RUBY_NUM_ROUND_HALF_UP,
14389 RUBY_NUM_ROUND_HALF_EVEN,
14390 RUBY_NUM_ROUND_HALF_DOWN,
14391 RUBY_NUM_ROUND_DEFAULT = RUBY_NUM_ROUND_HALF_UP,
14393typedef double rb_float_value_type;
14395 struct RBasic basic;
14396 rb_float_value_type float_value;
14398int rb_num_to_uint(VALUE val, unsigned int *ret);
14399VALUE ruby_num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl);
14400double ruby_float_step_size(double beg, double end, double unit, int excl);
14401int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl, int allow_endless);
14402int rb_num_negative_p(VALUE);
14403VALUE rb_int_succ(VALUE num);
14404VALUE rb_float_uminus(VALUE num);
14405VALUE rb_int_plus(VALUE x, VALUE y);
14406VALUE rb_float_plus(VALUE x, VALUE y);
14407VALUE rb_int_minus(VALUE x, VALUE y);
14408VALUE rb_float_minus(VALUE x, VALUE y);
14409VALUE rb_int_mul(VALUE x, VALUE y);
14410VALUE rb_float_mul(VALUE x, VALUE y);
14411VALUE rb_float_div(VALUE x, VALUE y);
14412VALUE rb_int_idiv(VALUE x, VALUE y);
14413VALUE rb_int_modulo(VALUE x, VALUE y);
14414VALUE rb_int2str(VALUE num, int base);
14415VALUE rb_fix_plus(VALUE x, VALUE y);
14416VALUE rb_int_gt(VALUE x, VALUE y);
14417VALUE rb_float_gt(VALUE x, VALUE y);
14418VALUE rb_int_ge(VALUE x, VALUE y);
14419enum ruby_num_rounding_mode rb_num_get_rounding_option(VALUE opts);
14420double rb_int_fdiv_double(VALUE x, VALUE y);
14421VALUE rb_int_pow(VALUE x, VALUE y);
14422VALUE rb_float_pow(VALUE x, VALUE y);
14423VALUE rb_int_cmp(VALUE x, VALUE y);
14424VALUE rb_int_equal(VALUE x, VALUE y);
14425VALUE rb_int_divmod(VALUE x, VALUE y);
14426VALUE rb_int_and(VALUE x, VALUE y);
14427VALUE rb_int_lshift(VALUE x, VALUE y);
14428VALUE rb_int_div(VALUE x, VALUE y);
14429int rb_int_positive_p(VALUE num);
14430int rb_int_negative_p(VALUE num);
14431VALUE rb_check_integer_type(VALUE);
14432VALUE rb_num_pow(VALUE x, VALUE y);
14433VALUE rb_float_ceil(VALUE num, int ndigits);
14434VALUE rb_float_floor(VALUE x, int ndigits);
14435VALUE rb_float_abs(VALUE flt);
14436static inline VALUE rb_num_compare_with_zero(VALUE num, ID mid);
14437static inline int rb_num_positive_int_p(VALUE num);
14438static inline int rb_num_negative_int_p(VALUE num);
14439static inline double rb_float_flonum_value(VALUE v);
14440static inline double rb_float_noflonum_value(VALUE v);
14441static inline double rb_float_value_inline(VALUE v);
14442static inline VALUE rb_float_new_inline(double d);
14443static inline _Bool INT_POSITIVE_P(VALUE num);
14444static inline _Bool INT_NEGATIVE_P(VALUE num);
14445static inline _Bool FLOAT_ZERO_P(VALUE num);
14452VALUE rb_flo_div_flo(VALUE x, VALUE y);
14453double ruby_float_mod(double x, double y);
14454VALUE rb_float_equal(VALUE x, VALUE y);
14455int rb_float_cmp(VALUE x, VALUE y);
14456VALUE rb_float_eql(VALUE x, VALUE y);
14457VALUE rb_fix_aref(VALUE fix, VALUE idx);
14458VALUE rb_int_zero_p(VALUE num);
14459VALUE rb_int_even_p(VALUE num);
14460VALUE rb_int_odd_p(VALUE num);
14461VALUE rb_int_abs(VALUE num);
14462VALUE rb_int_bit_length(VALUE num);
14463VALUE rb_int_uminus(VALUE num);
14464VALUE rb_int_comp(VALUE num);
14468INT_POSITIVE_P(VALUE num)
14470 if (RB_FIXNUM_P(num)) {
14471 return FIXNUM_POSITIVE_P(num);
14474 return BIGNUM_POSITIVE_P(num);
14478INT_NEGATIVE_P(VALUE num)
14480 if (RB_FIXNUM_P(num)) {
14481 return FIXNUM_NEGATIVE_P(num);
14484 return BIGNUM_NEGATIVE_P(num);
14488FLOAT_ZERO_P(VALUE num)
14490 return rb_float_value_inline(num) == 0.0;
14493rb_num_compare_with_zero(VALUE num, ID mid)
14495 VALUE zero = __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0));
14496 VALUE r = rb_check_funcall(num, mid, 1, &zero);
14497 if (r == ((VALUE)RUBY_Qundef)) {
14498 rb_cmperr(num, zero);
14503rb_num_positive_int_p(VALUE num)
14505 const ID mid = '>';
14506 if (RB_FIXNUM_P(num)) {
14507 if (rb_method_basic_definition_p(rb_cInteger, mid))
14508 return FIXNUM_POSITIVE_P(num);
14510 else if (RB_TYPE_P(num, RUBY_T_BIGNUM)) {
14511 if (rb_method_basic_definition_p(rb_cInteger, mid))
14512 return BIGNUM_POSITIVE_P(num);
14514 return RB_TEST(rb_num_compare_with_zero(num, mid));
14517rb_num_negative_int_p(VALUE num)
14519 const ID mid = '<';
14520 if (RB_FIXNUM_P(num)) {
14521 if (rb_method_basic_definition_p(rb_cInteger, mid))
14522 return FIXNUM_NEGATIVE_P(num);
14524 else if (RB_TYPE_P(num, RUBY_T_BIGNUM)) {
14525 if (rb_method_basic_definition_p(rb_cInteger, mid))
14526 return BIGNUM_NEGATIVE_P(num);
14528 return RB_TEST(rb_num_compare_with_zero(num, mid));
14530static inline double
14531rb_float_flonum_value(VALUE v)
14533 if (v != (VALUE)0x8000000000000002) {
14538 VALUE b63 = (v >> 63);
14539 t.v = RUBY_BIT_ROTR((2 - b63) | (v & ~(VALUE)0x03), 3);
14544static inline double
14545rb_float_noflonum_value(VALUE v)
14547 return ((struct RFloat *)(v))->float_value;
14549static inline double
14550rb_float_value_inline(VALUE v)
14552 if (RB_FLONUM_P(v)) {
14553 return rb_float_flonum_value(v);
14555 return rb_float_noflonum_value(v);
14558rb_float_new_inline(double d)
14566 bits = (int)((VALUE)(t.v >> 60) & 0x7);
14567 if (t.v != 0x3000000000000000 &&
14568 !((bits-3) & ~0x01)) {
14569 return (RUBY_BIT_ROTL(t.v, 3) & ~(VALUE)0x01) | 0x02;
14571 else if (t.v == (VALUE)0) {
14572 return 0x8000000000000002;
14574 return rb_float_new_in_heap(d);
14576int ruby_fill_random_bytes(void *, size_t, int);
14577void rb_gc_mark_global_tbl(void);
14578void rb_gc_update_global_tbl(void);
14579size_t rb_generic_ivar_memsize(VALUE);
14580VALUE rb_search_class_path(VALUE);
14581VALUE rb_attr_delete(VALUE, ID);
14582VALUE rb_ivar_lookup(VALUE obj, ID id, VALUE undef);
14583void rb_autoload_str(VALUE mod, ID id, VALUE file);
14584VALUE rb_autoload_at_p(VALUE, ID, int);
14585__attribute__((__noreturn__)) VALUE rb_mod_const_missing(VALUE,VALUE);
14586rb_gvar_getter_t *rb_gvar_getter_function_of(ID);
14587rb_gvar_setter_t *rb_gvar_setter_function_of(ID);
14588void rb_gvar_readonly_setter(VALUE v, ID id, VALUE *_);
14589void rb_gvar_ractor_local(const char *name);
14590static inline _Bool ROBJ_TRANSIENT_P(VALUE obj);
14591static inline void ROBJ_TRANSIENT_SET(VALUE obj);
14592static inline void ROBJ_TRANSIENT_UNSET(VALUE obj);
14593uint32_t rb_obj_ensure_iv_index_mapping(VALUE obj, ID id);
14596void rb_mark_generic_ivar(VALUE);
14597void rb_mv_generic_ivar(VALUE src, VALUE dst);
14598VALUE rb_const_missing(VALUE klass, VALUE name);
14599int rb_class_ivar_set(VALUE klass, ID vid, VALUE value);
14600void rb_iv_tbl_copy(VALUE dst, VALUE src);
14605VALUE rb_gvar_get(ID);
14606VALUE rb_gvar_set(ID, VALUE);
14607VALUE rb_gvar_defined(ID);
14608void rb_const_warn_if_deprecated(const rb_const_entry_t *, VALUE, ID);
14609void rb_init_iv_list(VALUE obj);
14613ROBJ_TRANSIENT_P(VALUE obj)
14615 return RB_FL_TEST_RAW(obj, ((VALUE)RUBY_FL_USER13));
14618ROBJ_TRANSIENT_SET(VALUE obj)
14620 RB_FL_SET_RAW(obj, ((VALUE)RUBY_FL_USER13));
14623ROBJ_TRANSIENT_UNSET(VALUE obj)
14625 RB_FL_UNSET_RAW(obj, ((VALUE)RUBY_FL_USER13));
14628 RSTRUCT_EMBED_LEN_MAX = RVALUE_EMBED_LEN_MAX,
14629 RSTRUCT_EMBED_LEN_MASK = (RUBY_FL_USER2|RUBY_FL_USER1),
14630 RSTRUCT_EMBED_LEN_SHIFT = (RUBY_FL_USHIFT+1),
14631 RSTRUCT_TRANSIENT_FLAG = ((VALUE)RUBY_FL_USER3),
14634 struct RBasic basic;
14640 const VALUE ary[RSTRUCT_EMBED_LEN_MAX];
14643VALUE rb_struct_init_copy(VALUE copy, VALUE s);
14644VALUE rb_struct_lookup(VALUE s, VALUE idx);
14645VALUE rb_struct_s_keyword_init(VALUE klass);
14646static inline const VALUE *rb_struct_const_heap_ptr(VALUE st);
14647static inline _Bool RSTRUCT_TRANSIENT_P(VALUE st);
14648static inline void RSTRUCT_TRANSIENT_SET(VALUE st);
14649static inline void RSTRUCT_TRANSIENT_UNSET(VALUE st);
14650static inline long RSTRUCT_EMBED_LEN(VALUE st);
14651static inline long internal_RSTRUCT_LEN(VALUE st);
14652static inline int RSTRUCT_LENINT(VALUE st);
14653static inline const VALUE *RSTRUCT_CONST_PTR(VALUE st);
14654static inline void internal_RSTRUCT_SET(VALUE st, long k, VALUE v);
14655static inline VALUE internal_RSTRUCT_GET(VALUE st, long k);
14657RSTRUCT_TRANSIENT_P(VALUE st)
14659 return RB_FL_TEST_RAW(st, RSTRUCT_TRANSIENT_FLAG);
14662RSTRUCT_TRANSIENT_SET(VALUE st)
14664 RB_FL_SET_RAW(st, RSTRUCT_TRANSIENT_FLAG);
14667RSTRUCT_TRANSIENT_UNSET(VALUE st)
14669 RB_FL_UNSET_RAW(st, RSTRUCT_TRANSIENT_FLAG);
14672RSTRUCT_EMBED_LEN(VALUE st)
14674 long ret = RB_FL_TEST_RAW(st, RSTRUCT_EMBED_LEN_MASK);
14675 ret >>= RSTRUCT_EMBED_LEN_SHIFT;
14679internal_RSTRUCT_LEN(VALUE st)
14681 if (RB_FL_TEST_RAW(st, RSTRUCT_EMBED_LEN_MASK)) {
14682 return RSTRUCT_EMBED_LEN(st);
14685 return ((struct RStruct *)(st))->as.heap.len;
14689RSTRUCT_LENINT(VALUE st)
14691 return rb_long2int_inline(internal_RSTRUCT_LEN(st));
14693static inline const VALUE *
14694RSTRUCT_CONST_PTR(VALUE st)
14696 const struct RStruct *p = ((struct RStruct *)(st));
14697 if (RB_FL_TEST_RAW(st, RSTRUCT_EMBED_LEN_MASK)) {
14701 return p->as.heap.ptr;
14705internal_RSTRUCT_SET(VALUE st, long k, VALUE v)
14707 rb_obj_write((VALUE)(st), __extension__({
14709 ; __typeof__((VALUE *)(&RSTRUCT_CONST_PTR(st)[k])) unaligned_member_access_result = ((VALUE *)(&RSTRUCT_CONST_PTR(st)[k]));
14710 ; unaligned_member_access_result; }), (VALUE)(v), "./internal/struct.h", 137);
14713internal_RSTRUCT_GET(VALUE st, long k)
14715 return RSTRUCT_CONST_PTR(st)[k];
14717static inline const VALUE *
14718rb_struct_const_heap_ptr(VALUE st)
14720 return ((struct RStruct *)(st))->as.heap.ptr;
14726int rb_ivar_generic_ivtbl_lookup(VALUE obj, struct gen_ivtbl **);
14727VALUE rb_ivar_generic_lookup_with_index(VALUE obj, ID id, uint32_t index);
14728enum ruby_vminsn_type {
14732 YARVINSN_getblockparam,
14733 YARVINSN_setblockparam,
14734 YARVINSN_getblockparamproxy,
14735 YARVINSN_getspecial,
14736 YARVINSN_setspecial,
14737 YARVINSN_getinstancevariable,
14738 YARVINSN_setinstancevariable,
14739 YARVINSN_getclassvariable,
14740 YARVINSN_setclassvariable,
14741 YARVINSN_getconstant,
14742 YARVINSN_setconstant,
14743 YARVINSN_getglobal,
14744 YARVINSN_setglobal,
14747 YARVINSN_putobject,
14748 YARVINSN_putspecialobject,
14749 YARVINSN_putstring,
14750 YARVINSN_concatstrings,
14751 YARVINSN_anytostring,
14755 YARVINSN_newarraykwsplat,
14758 YARVINSN_expandarray,
14759 YARVINSN_concatarray,
14760 YARVINSN_splatarray,
14769 YARVINSN_adjuststack,
14771 YARVINSN_checkmatch,
14772 YARVINSN_checkkeyword,
14773 YARVINSN_checktype,
14774 YARVINSN_defineclass,
14775 YARVINSN_definemethod,
14776 YARVINSN_definesmethod,
14778 YARVINSN_opt_send_without_block,
14779 YARVINSN_objtostring,
14780 YARVINSN_opt_str_freeze,
14781 YARVINSN_opt_nil_p,
14782 YARVINSN_opt_str_uminus,
14783 YARVINSN_opt_newarray_max,
14784 YARVINSN_opt_newarray_min,
14785 YARVINSN_invokesuper,
14786 YARVINSN_invokeblock,
14791 YARVINSN_branchunless,
14792 YARVINSN_branchnil,
14793 YARVINSN_opt_getinlinecache,
14794 YARVINSN_opt_setinlinecache,
14796 YARVINSN_opt_case_dispatch,
14798 YARVINSN_opt_minus,
14813 YARVINSN_opt_aset_with,
14814 YARVINSN_opt_aref_with,
14815 YARVINSN_opt_length,
14817 YARVINSN_opt_empty_p,
14820 YARVINSN_opt_regexpmatch2,
14821 YARVINSN_invokebuiltin,
14822 YARVINSN_opt_invokebuiltin_delegate,
14823 YARVINSN_opt_invokebuiltin_delegate_leave,
14824 YARVINSN_getlocal_WC_0,
14825 YARVINSN_getlocal_WC_1,
14826 YARVINSN_setlocal_WC_0,
14827 YARVINSN_setlocal_WC_1,
14828 YARVINSN_putobject_INT2FIX_0_,
14829 YARVINSN_putobject_INT2FIX_1_,
14830 YARVINSN_trace_nop,
14831 YARVINSN_trace_getlocal,
14832 YARVINSN_trace_setlocal,
14833 YARVINSN_trace_getblockparam,
14834 YARVINSN_trace_setblockparam,
14835 YARVINSN_trace_getblockparamproxy,
14836 YARVINSN_trace_getspecial,
14837 YARVINSN_trace_setspecial,
14838 YARVINSN_trace_getinstancevariable,
14839 YARVINSN_trace_setinstancevariable,
14840 YARVINSN_trace_getclassvariable,
14841 YARVINSN_trace_setclassvariable,
14842 YARVINSN_trace_getconstant,
14843 YARVINSN_trace_setconstant,
14844 YARVINSN_trace_getglobal,
14845 YARVINSN_trace_setglobal,
14846 YARVINSN_trace_putnil,
14847 YARVINSN_trace_putself,
14848 YARVINSN_trace_putobject,
14849 YARVINSN_trace_putspecialobject,
14850 YARVINSN_trace_putstring,
14851 YARVINSN_trace_concatstrings,
14852 YARVINSN_trace_anytostring,
14853 YARVINSN_trace_toregexp,
14854 YARVINSN_trace_intern,
14855 YARVINSN_trace_newarray,
14856 YARVINSN_trace_newarraykwsplat,
14857 YARVINSN_trace_duparray,
14858 YARVINSN_trace_duphash,
14859 YARVINSN_trace_expandarray,
14860 YARVINSN_trace_concatarray,
14861 YARVINSN_trace_splatarray,
14862 YARVINSN_trace_newhash,
14863 YARVINSN_trace_newrange,
14864 YARVINSN_trace_pop,
14865 YARVINSN_trace_dup,
14866 YARVINSN_trace_dupn,
14867 YARVINSN_trace_swap,
14868 YARVINSN_trace_topn,
14869 YARVINSN_trace_setn,
14870 YARVINSN_trace_adjuststack,
14871 YARVINSN_trace_defined,
14872 YARVINSN_trace_checkmatch,
14873 YARVINSN_trace_checkkeyword,
14874 YARVINSN_trace_checktype,
14875 YARVINSN_trace_defineclass,
14876 YARVINSN_trace_definemethod,
14877 YARVINSN_trace_definesmethod,
14878 YARVINSN_trace_send,
14879 YARVINSN_trace_opt_send_without_block,
14880 YARVINSN_trace_objtostring,
14881 YARVINSN_trace_opt_str_freeze,
14882 YARVINSN_trace_opt_nil_p,
14883 YARVINSN_trace_opt_str_uminus,
14884 YARVINSN_trace_opt_newarray_max,
14885 YARVINSN_trace_opt_newarray_min,
14886 YARVINSN_trace_invokesuper,
14887 YARVINSN_trace_invokeblock,
14888 YARVINSN_trace_leave,
14889 YARVINSN_trace_throw,
14890 YARVINSN_trace_jump,
14891 YARVINSN_trace_branchif,
14892 YARVINSN_trace_branchunless,
14893 YARVINSN_trace_branchnil,
14894 YARVINSN_trace_opt_getinlinecache,
14895 YARVINSN_trace_opt_setinlinecache,
14896 YARVINSN_trace_once,
14897 YARVINSN_trace_opt_case_dispatch,
14898 YARVINSN_trace_opt_plus,
14899 YARVINSN_trace_opt_minus,
14900 YARVINSN_trace_opt_mult,
14901 YARVINSN_trace_opt_div,
14902 YARVINSN_trace_opt_mod,
14903 YARVINSN_trace_opt_eq,
14904 YARVINSN_trace_opt_neq,
14905 YARVINSN_trace_opt_lt,
14906 YARVINSN_trace_opt_le,
14907 YARVINSN_trace_opt_gt,
14908 YARVINSN_trace_opt_ge,
14909 YARVINSN_trace_opt_ltlt,
14910 YARVINSN_trace_opt_and,
14911 YARVINSN_trace_opt_or,
14912 YARVINSN_trace_opt_aref,
14913 YARVINSN_trace_opt_aset,
14914 YARVINSN_trace_opt_aset_with,
14915 YARVINSN_trace_opt_aref_with,
14916 YARVINSN_trace_opt_length,
14917 YARVINSN_trace_opt_size,
14918 YARVINSN_trace_opt_empty_p,
14919 YARVINSN_trace_opt_succ,
14920 YARVINSN_trace_opt_not,
14921 YARVINSN_trace_opt_regexpmatch2,
14922 YARVINSN_trace_invokebuiltin,
14923 YARVINSN_trace_opt_invokebuiltin_delegate,
14924 YARVINSN_trace_opt_invokebuiltin_delegate_leave,
14925 YARVINSN_trace_getlocal_WC_0,
14926 YARVINSN_trace_getlocal_WC_1,
14927 YARVINSN_trace_setlocal_WC_0,
14928 YARVINSN_trace_setlocal_WC_1,
14929 YARVINSN_trace_putobject_INT2FIX_0_,
14930 YARVINSN_trace_putobject_INT2FIX_1_,
14931 VM_INSTRUCTION_SIZE
14933extern rb_method_definition_t *rb_method_definition_create(rb_method_type_t type, ID mid);
14934extern void rb_method_definition_set(const rb_method_entry_t *me, rb_method_definition_t *def, void *opts);
14935extern int rb_method_definition_eq(const rb_method_definition_t *d1, const rb_method_definition_t *d2);
14936extern VALUE rb_make_no_method_exception(VALUE exc, VALUE format, VALUE obj,
14937 int argc, const VALUE *argv, int priv);
14938static rb_control_frame_t *vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
14940ruby_vm_special_exception_copy(VALUE exc)
14942 VALUE e = rb_obj_alloc(rb_class_real(RBASIC_CLASS(exc)));
14943 rb_obj_copy_ivar(e, exc);
14946__attribute__((__noreturn__)) static void ec_stack_overflow(rb_execution_context_t *ec, int);
14948ec_stack_overflow(rb_execution_context_t *ec, int setup)
14950 VALUE mesg = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_sysstack];
14951 ec->raised_flag = RAISED_STACKOVERFLOW;
14953 VALUE at = rb_ec_backtrace_object(ec);
14954 mesg = ruby_vm_special_exception_copy(mesg);
14955 rb_ivar_set(mesg, idBt, at);
14956 rb_ivar_set(mesg, idBt_locations, at);
14958 ec->errinfo = mesg;
14959 rb_ec_tag_jump(ec, RUBY_TAG_RAISE);
14961__attribute__((__noreturn__)) static void vm_stackoverflow(void);
14962__attribute__((__noinline__)) static __attribute__((__cold__)) void vm_stackoverflow(void);
14964vm_stackoverflow(void)
14966 ec_stack_overflow(rb_current_execution_context(1), 1);
14968__attribute__((__noreturn__)) static void rb_ec_stack_overflow(rb_execution_context_t *ec, int crit);
14970rb_ec_stack_overflow(rb_execution_context_t *ec, int crit)
14972 if (rb_during_gc()) {
14973 rb_bug("system stack overflow during GC. Faulty native extension?");
14976 ec->raised_flag = RAISED_STACKOVERFLOW;
14977 ec->errinfo = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_stackfatal];
14978 rb_ec_tag_jump(ec, RUBY_TAG_RAISE);
14980 ec_stack_overflow(ec, 1);
14982__extension__ _Static_assert((-2) == -2, "VM_ENV_DATA_INDEX_ME_CREF" ": " "VM_ENV_DATA_INDEX_ME_CREF == -2");
14983__extension__ _Static_assert((-1) == -1, "VM_ENV_DATA_INDEX_SPECVAL" ": " "VM_ENV_DATA_INDEX_SPECVAL == -1");
14984__extension__ _Static_assert(( 0) == -0, "VM_ENV_DATA_INDEX_FLAGS" ": " "VM_ENV_DATA_INDEX_FLAGS == -0");
14986vm_push_frame(rb_execution_context_t *ec,
14987 const rb_iseq_t *iseq,
14997 rb_control_frame_t *const cfp = ((ec->cfp)-1);
15000 do { __extension__ _Static_assert(sizeof(*(sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*(sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*(cfp)) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*(cfp)) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&(sp)[(local_size + stack_max)]; if ((__builtin_expect(!!((cfp) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
15002 for (int i=0; i < local_size; i++) {
15003 *sp++ = ((VALUE)RUBY_Qnil);
15005 *sp++ = cref_or_me;
15008 *cfp = (const struct rb_control_frame_struct) {
15014 .block_code = ((void *)0),
15016 .jit_return = ((void *)0)
15020 rb_vmdebug_stack_dump_raw(rb_current_execution_context(1), rb_current_execution_context(1)->cfp);
15025vm_pop_frame(rb_execution_context_t *ec, rb_control_frame_t *cfp, const VALUE *ep)
15027 VALUE flags = ep[( 0)];
15028 if ((((0) > 0) ? (0) : 0) >= 4) rb_gc_verify_internal_consistency();
15029 if (0 == 2) rb_vmdebug_stack_dump_raw(rb_current_execution_context(1), rb_current_execution_context(1)->cfp);
15030 rb_vm_check_ints(ec);
15031 ec->cfp = ((cfp)+1);
15032 return flags & VM_FRAME_FLAG_FINISH;
15035rb_vm_pop_frame(rb_execution_context_t *ec)
15037 vm_pop_frame(ec, ec->cfp, ec->cfp->ep);
15040rb_arity_error_new(int argc, int min, int max)
15042 VALUE err_mess = 0;
15044 err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d)", argc, min);
15046 else if (max == (-1)) {
15047 err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d+)", argc, min);
15050 err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d..%d)", argc, min, max);
15052 return rb_exc_new_str(rb_eArgError, err_mess);
15055rb_error_arity(int argc, int min, int max)
15057 rb_exc_raise(rb_arity_error_new(argc, min, max));
15059__attribute__((__noinline__)) static void vm_env_write_slowpath(const VALUE *ep, int index, VALUE v);
15061vm_env_write_slowpath(const VALUE *ep, int index, VALUE v)
15063 rb_gc_writebarrier_remember(VM_ENV_ENVVAL(ep));
15064 VM_FORCE_WRITE(&ep[index], v);
15065 VM_ENV_FLAGS_UNSET(ep, VM_ENV_FLAG_WB_REQUIRED);
15069vm_env_write(const VALUE *ep, int index, VALUE v)
15071 VALUE flags = ep[( 0)];
15072 if ((__builtin_expect(!!((flags & VM_ENV_FLAG_WB_REQUIRED) == 0), 1))) {
15073 VM_STACK_ENV_WRITE(ep, index, v);
15076 vm_env_write_slowpath(ep, index, v);
15080rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler)
15082 if (block_handler == 0) {
15083 return ((VALUE)RUBY_Qnil);
15086 switch (vm_block_handler_type(block_handler)) {
15087 case block_handler_type_iseq:
15088 case block_handler_type_ifunc:
15089 return rb_vm_make_proc(ec, VM_BH_TO_CAPT_BLOCK(block_handler), rb_cProc);
15090 case block_handler_type_symbol:
15091 return rb_sym_to_proc(VM_BH_TO_SYMBOL(block_handler));
15092 case block_handler_type_proc:
15093 return VM_BH_TO_PROC(block_handler);
15095 __builtin_unreachable();
15099static inline struct vm_svar *
15100lep_svar(const rb_execution_context_t *ec, const VALUE *lep)
15103 if (lep && (ec == ((void *)0) || ec->root_lep != lep)) {
15107 svar = ec->root_svar;
15110 return (struct vm_svar *)svar;
15113lep_svar_write(const rb_execution_context_t *ec, const VALUE *lep, const struct vm_svar *svar)
15116 if (lep && (ec == ((void *)0) || ec->root_lep != lep)) {
15117 vm_env_write(lep, (-2), (VALUE)svar);
15120 rb_obj_write((VALUE)(rb_ec_thread_ptr(ec)->self), __extension__({
15122; __typeof__((VALUE *)(&ec->root_svar)) unaligned_member_access_result = ((VALUE *)(&ec->root_svar));
15123; unaligned_member_access_result; }), (VALUE)(svar), "./vm_insnhelper.c", 544);
15127lep_svar_get(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key)
15129 const struct vm_svar *svar = lep_svar(ec, lep);
15130 if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) return ((VALUE)RUBY_Qnil);
15132 case VM_SVAR_LASTLINE:
15133 return svar->lastline;
15134 case VM_SVAR_BACKREF:
15135 return svar->backref;
15137 const VALUE ary = svar->others;
15138 if (RB_NIL_P(ary)) {
15139 return ((VALUE)RUBY_Qnil);
15142 return rb_ary_entry(ary, key - VM_SVAR_EXTRA_START);
15147static struct vm_svar *
15150 return (struct vm_svar *)rb_imemo_new(imemo_svar, ((VALUE)RUBY_Qnil), ((VALUE)RUBY_Qnil), ((VALUE)RUBY_Qnil), obj);
15153lep_svar_set(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key, VALUE val)
15155 struct vm_svar *svar = lep_svar(ec, lep);
15156 if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) {
15157 lep_svar_write(ec, lep, svar = svar_new((VALUE)svar));
15160 case VM_SVAR_LASTLINE:
15161 rb_obj_write((VALUE)(svar), __extension__({
15163; __typeof__((VALUE *)(&svar->lastline)) unaligned_member_access_result = ((VALUE *)(&svar->lastline));
15164; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 590);
15166 case VM_SVAR_BACKREF:
15167 rb_obj_write((VALUE)(svar), __extension__({
15169; __typeof__((VALUE *)(&svar->backref)) unaligned_member_access_result = ((VALUE *)(&svar->backref));
15170; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 593);
15173 VALUE ary = svar->others;
15174 if (RB_NIL_P(ary)) {
15175 rb_obj_write((VALUE)(svar), __extension__({
15177 ; __typeof__((VALUE *)(&svar->others)) unaligned_member_access_result = ((VALUE *)(&svar->others));
15178 ; unaligned_member_access_result; }), (VALUE)(ary = rb_ary_new()), "./vm_insnhelper.c", 599);
15180 rb_ary_store(ary, key - VM_SVAR_EXTRA_START, val);
15185vm_getspecial(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key, rb_num_t type)
15189 val = lep_svar_get(ec, lep, key);
15192 VALUE backref = lep_svar_get(ec, lep, VM_SVAR_BACKREF);
15194 switch (type >> 1) {
15196 val = rb_reg_last_match(backref);
15199 val = rb_reg_match_pre(backref);
15202 val = rb_reg_match_post(backref);
15205 val = rb_reg_match_last(backref);
15208 rb_bug("unexpected back-ref");
15212 val = rb_reg_nth_match((int)(type >> 1), backref);
15217__attribute__((__pure__)) static rb_callable_method_entry_t *check_method_entry(VALUE obj, int can_be_svar);
15218static rb_callable_method_entry_t *
15219check_method_entry(VALUE obj, int can_be_svar)
15221 if (obj == ((VALUE)RUBY_Qfalse)) return ((void *)0);
15222 switch (imemo_type(obj)) {
15224 return (rb_callable_method_entry_t *)obj;
15226 return ((void *)0);
15229 return check_method_entry(((struct vm_svar *)obj)->cref_or_me, 0);
15232 return ((void *)0);
15235static const rb_callable_method_entry_t *
15236rb_vm_frame_method_entry(const rb_control_frame_t *cfp)
15238 const VALUE *ep = cfp->ep;
15239 rb_callable_method_entry_t *me;
15240 while (!VM_ENV_LOCAL_P(ep)) {
15241 if ((me = check_method_entry(ep[(-2)], 0)) != ((void *)0)) return me;
15242 ep = VM_ENV_PREV_EP(ep);
15244 return check_method_entry(ep[(-2)], 1);
15246static const rb_iseq_t *
15247method_entry_iseqptr(const rb_callable_method_entry_t *me)
15249 switch (me->def->type) {
15250 case VM_METHOD_TYPE_ISEQ:
15251 return me->def->body.iseq.iseqptr;
15253 return ((void *)0);
15257method_entry_cref(const rb_callable_method_entry_t *me)
15259 switch (me->def->type) {
15260 case VM_METHOD_TYPE_ISEQ:
15261 return me->def->body.iseq.cref;
15263 return ((void *)0);
15266__attribute__((__pure__)) static rb_cref_t *check_cref(VALUE, int);
15268check_cref(VALUE obj, int can_be_svar)
15270 if (obj == ((VALUE)RUBY_Qfalse)) return ((void *)0);
15271 switch (imemo_type(obj)) {
15273 return method_entry_cref((rb_callable_method_entry_t *)obj);
15275 return (rb_cref_t *)obj;
15278 return check_cref(((struct vm_svar *)obj)->cref_or_me, 0);
15281 return ((void *)0);
15284static inline rb_cref_t *
15285vm_env_cref(const VALUE *ep)
15288 while (!VM_ENV_LOCAL_P(ep)) {
15289 if ((cref = check_cref(ep[(-2)], 0)) != ((void *)0)) return cref;
15290 ep = VM_ENV_PREV_EP(ep);
15292 return check_cref(ep[(-2)], 1);
15295is_cref(const VALUE v, int can_be_svar)
15297 if (RB_TYPE_P(v, RUBY_T_IMEMO)) {
15298 switch (imemo_type(v)) {
15302 if (can_be_svar) return is_cref(((struct vm_svar *)v)->cref_or_me, 0);
15310vm_env_cref_by_cref(const VALUE *ep)
15312 while (!VM_ENV_LOCAL_P(ep)) {
15313 if (is_cref(ep[(-2)], 0)) return 1;
15314 ep = VM_ENV_PREV_EP(ep);
15316 return is_cref(ep[(-2)], 1);
15319cref_replace_with_duplicated_cref_each_frame(const VALUE *vptr, int can_be_svar, VALUE parent)
15321 const VALUE v = *vptr;
15322 rb_cref_t *cref, *new_cref;
15323 if (RB_TYPE_P(v, RUBY_T_IMEMO)) {
15324 switch (imemo_type(v)) {
15326 cref = (rb_cref_t *)v;
15327 new_cref = vm_cref_dup(cref);
15329 rb_obj_write((VALUE)(parent), __extension__({
15331 ; __typeof__((VALUE *)(vptr)) unaligned_member_access_result = ((VALUE *)(vptr));
15332 ; unaligned_member_access_result; }), (VALUE)(new_cref), "./vm_insnhelper.c", 785);
15335 VM_FORCE_WRITE(vptr, (VALUE)new_cref);
15337 return (rb_cref_t *)new_cref;
15340 return cref_replace_with_duplicated_cref_each_frame(&((struct vm_svar *)v)->cref_or_me, 0, v);
15343 rb_bug("cref_replace_with_duplicated_cref_each_frame: unreachable");
15351vm_cref_replace_with_duplicated_cref(const VALUE *ep)
15353 if (vm_env_cref_by_cref(ep)) {
15356 while (!VM_ENV_LOCAL_P(ep)) {
15357 envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse);
15358 if ((cref = cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 0, envval)) != ((void *)0)) {
15361 ep = VM_ENV_PREV_EP(ep);
15363 envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse);
15364 return cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 1, envval);
15367 rb_bug("vm_cref_dup: unreachable");
15371vm_get_cref(const VALUE *ep)
15373 rb_cref_t *cref = vm_env_cref(ep);
15374 if (cref != ((void *)0)) {
15378 rb_bug("vm_get_cref: unreachable");
15382rb_vm_get_cref(const VALUE *ep)
15384 return vm_get_cref(ep);
15387vm_ec_cref(const rb_execution_context_t *ec)
15389 const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
15390 if (cfp == ((void *)0)) {
15391 return ((void *)0);
15393 return vm_get_cref(cfp->ep);
15395static const rb_cref_t *
15396vm_get_const_key_cref(const VALUE *ep)
15398 const rb_cref_t *cref = vm_get_cref(ep);
15399 const rb_cref_t *key_cref = cref;
15401 if (RB_FL_TEST(CREF_CLASS(cref), ((VALUE)RUBY_FL_SINGLETON)) ||
15402 RB_FL_TEST(CREF_CLASS(cref), ((VALUE)RUBY_FL_USER6))) {
15405 cref = CREF_NEXT(cref);
15407 return ((void *)0);
15410rb_vm_rewrite_cref(rb_cref_t *cref, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr)
15412 rb_cref_t *new_cref;
15414 if (CREF_CLASS(cref) == old_klass) {
15415 new_cref = vm_cref_new_use_prev(new_klass, METHOD_VISI_UNDEF, 0, cref, 0);
15416 *new_cref_ptr = new_cref;
15419 new_cref = vm_cref_new_use_prev(CREF_CLASS(cref), METHOD_VISI_UNDEF, 0, cref, 0);
15420 cref = CREF_NEXT(cref);
15421 *new_cref_ptr = new_cref;
15422 new_cref_ptr = &new_cref->next;
15424 *new_cref_ptr = ((void *)0);
15427vm_cref_push(const rb_execution_context_t *ec, VALUE klass, const VALUE *ep, int pushed_by_eval, int singleton)
15429 rb_cref_t *prev_cref = ((void *)0);
15431 prev_cref = vm_env_cref(ep);
15434 rb_control_frame_t *cfp = vm_get_ruby_level_caller_cfp(ec, ec->cfp);
15436 prev_cref = vm_env_cref(cfp->ep);
15439 return vm_cref_new(klass, METHOD_VISI_PUBLIC, 0, prev_cref, pushed_by_eval, singleton);
15442vm_get_cbase(const VALUE *ep)
15444 const rb_cref_t *cref = vm_get_cref(ep);
15445 return CREF_CLASS_FOR_DEFINITION(cref);
15448vm_get_const_base(const VALUE *ep)
15450 const rb_cref_t *cref = vm_get_cref(ep);
15452 if (!CREF_PUSHED_BY_EVAL(cref)) {
15453 return CREF_CLASS_FOR_DEFINITION(cref);
15455 cref = CREF_NEXT(cref);
15457 return ((VALUE)RUBY_Qundef);
15460vm_check_if_namespace(VALUE klass)
15462 if (!RB_TYPE_P(klass, RUBY_T_CLASS) && !RB_TYPE_P(klass, RUBY_T_MODULE)) {
15463 rb_raise(rb_eTypeError, "%+""l""i" "\v"" is not a class/module", klass);
15467vm_ensure_not_refinement_module(VALUE self)
15469 if (RB_TYPE_P(self, RUBY_T_MODULE) && RB_FL_TEST(self, RMODULE_IS_REFINEMENT)) {
15470 rb_warn("not defined at the refinement, but at the outer class/module");
15474vm_get_iclass(const rb_control_frame_t *cfp, VALUE klass)
15479vm_get_ev_const(rb_execution_context_t *ec, VALUE orig_klass, ID id, _Bool allow_nil, int is_defined)
15481 void rb_const_warn_if_deprecated(const rb_const_entry_t *ce, VALUE klass, ID id);
15483 if (RB_NIL_P(orig_klass) && allow_nil) {
15484 const rb_cref_t *root_cref = vm_get_cref(ec->cfp->ep);
15485 const rb_cref_t *cref;
15486 VALUE klass = ((VALUE)RUBY_Qnil);
15487 while (root_cref && CREF_PUSHED_BY_EVAL(root_cref)) {
15488 root_cref = CREF_NEXT(root_cref);
15491 while (cref && CREF_NEXT(cref)) {
15492 if (CREF_PUSHED_BY_EVAL(cref)) {
15493 klass = ((VALUE)RUBY_Qnil);
15496 klass = CREF_CLASS(cref);
15498 cref = CREF_NEXT(cref);
15499 if (!RB_NIL_P(klass)) {
15501 rb_const_entry_t *ce;
15503 if ((ce = rb_const_lookup(klass, id))) {
15504 rb_const_warn_if_deprecated(ce, klass, id);
15506 if (val == ((VALUE)RUBY_Qundef)) {
15507 if (am == klass) break;
15509 if (is_defined) return 1;
15510 if (rb_autoloading_value(klass, id, &av, ((void *)0))) return av;
15511 rb_autoload_load(klass, id);
15512 goto search_continue;
15519 if ((__builtin_expect(!!(!rb_ractor_main_p()), 0))) {
15520 if (!rb_ractor_shareable_p(val)) {
15521 rb_raise(rb_eRactorIsolationError,
15522 "can not access non-shareable objects in constant %""l""i" "\v""::%s by non-main ractor.", rb_class_path(klass), rb_id2name(id));
15531 if (root_cref && !RB_NIL_P(CREF_CLASS(root_cref))) {
15532 klass = vm_get_iclass(ec->cfp, CREF_CLASS(root_cref));
15535 klass = rb_class_of(ec->cfp->self);
15538 return rb_const_defined(klass, id);
15541 return rb_const_get(klass, id);
15545 vm_check_if_namespace(orig_klass);
15547 return rb_public_const_defined_from(orig_klass, id);
15550 return rb_public_const_get_from(orig_klass, id);
15555vm_get_cvar_base(const rb_cref_t *cref, const rb_control_frame_t *cfp, int top_level_raise)
15559 rb_bug("vm_get_cvar_base: no cref");
15561 while (CREF_NEXT(cref) &&
15562 (RB_NIL_P(CREF_CLASS(cref)) || RB_FL_TEST(CREF_CLASS(cref), ((VALUE)RUBY_FL_SINGLETON)) ||
15563 CREF_PUSHED_BY_EVAL(cref) || CREF_SINGLETON(cref))) {
15564 cref = CREF_NEXT(cref);
15566 if (top_level_raise && !CREF_NEXT(cref)) {
15567 rb_raise(rb_eRuntimeError, "class variable access from toplevel");
15569 klass = vm_get_iclass(cfp, CREF_CLASS(cref));
15570 if (RB_NIL_P(klass)) {
15571 rb_raise(rb_eTypeError, "no class variables available");
15576vm_search_const_defined_class(const VALUE cbase, ID id)
15578 if (rb_const_defined_at(cbase, id)) return cbase;
15579 if (cbase == rb_cObject) {
15580 VALUE tmp = RCLASS_SUPER(cbase);
15582 if (rb_const_defined_at(tmp, id)) return tmp;
15583 tmp = RCLASS_SUPER(tmp);
15589iv_index_tbl_lookup(struct st_table *iv_index_tbl, ID id, struct rb_iv_index_tbl_entry **ent)
15592 st_data_t ent_data;
15593 if (iv_index_tbl == ((void *)0)) return 0;
15594 { unsigned int _lev; rb_vm_lock_enter(&_lev, "./vm_insnhelper.c", 1090);;
15596 found = rb_st_lookup(iv_index_tbl, (st_data_t)id, &ent_data);
15598 rb_vm_lock_leave(&_lev, "./vm_insnhelper.c", 1094); };
15599 if (found) *ent = (struct rb_iv_index_tbl_entry *)ent_data;
15600 return found ? 1 : 0;
15602__attribute__ ((__always_inline__)) static void fill_ivar_cache(const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr, struct rb_iv_index_tbl_entry *ent);
15604fill_ivar_cache(const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr, struct rb_iv_index_tbl_entry *ent)
15608 (rb_obj_written((VALUE)(iseq), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(ent->class_value), "./vm_insnhelper.c", 1108));
15611 vm_cc_attr_index_set(cc, (int)ent->index + 1);
15614__attribute__ ((__always_inline__)) static VALUE vm_getivar(VALUE, ID, const rb_iseq_t *, IVC, const struct rb_callcache *, int);
15616vm_getivar(VALUE obj, ID id, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr)
15618 VALUE val = ((VALUE)RUBY_Qundef);
15619 if (RB_SPECIAL_CONST_P(obj)) {
15621 else if ((__builtin_expect(!!(is_attr ? (!!(vm_cc_attr_index(cc) > 0)) : (!!(ic->entry && ic->entry->class_serial == (((struct RClass *)(((struct RBasic *)(obj))->klass))->class_serial)))), 1))) {
15622 uint32_t index = !is_attr ? ic->entry->index : (vm_cc_attr_index(cc) - 1);
15624 if ((__builtin_expect(!!(RB_BUILTIN_TYPE(obj) == RUBY_T_OBJECT), 1)) &&
15625 (__builtin_expect(!!(index < ROBJECT_NUMIV(obj)), 1))) {
15626 val = ROBJECT_IVPTR(obj)[index];
15629 else if (RB_FL_TEST_RAW(obj, ((VALUE)RUBY_FL_EXIVAR))) {
15630 val = rb_ivar_generic_lookup_with_index(obj, id, index);
15635 struct rb_iv_index_tbl_entry *ent;
15636 if (RB_BUILTIN_TYPE(obj) == RUBY_T_OBJECT) {
15637 struct st_table *iv_index_tbl = ROBJECT_IV_INDEX_TBL_inline(obj);
15638 if (iv_index_tbl && iv_index_tbl_lookup(iv_index_tbl, id, &ent)) {
15639 fill_ivar_cache(iseq, ic, cc, is_attr, ent);
15640 if (ent->index < ROBJECT_NUMIV(obj)) {
15641 val = ROBJECT_IVPTR(obj)[ent->index];
15646 else if (RB_FL_TEST_RAW(obj, ((VALUE)RUBY_FL_EXIVAR))) {
15647 struct st_table *iv_index_tbl = ((((struct RClass *)(rb_obj_class(obj)))->ptr)->iv_index_tbl);
15648 if (iv_index_tbl && iv_index_tbl_lookup(iv_index_tbl, id, &ent)) {
15649 fill_ivar_cache(iseq, ic, cc, is_attr, ent);
15650 val = rb_ivar_generic_lookup_with_index(obj, id, ent->index);
15657 if ((__builtin_expect(!!(val != ((VALUE)RUBY_Qundef)), 1))) {
15661 return ((VALUE)RUBY_Qnil);
15667 return rb_attr_get(obj, id);
15670 return rb_ivar_get(obj, id);
15673__attribute__ ((__always_inline__)) static VALUE vm_setivar_slowpath(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr);
15674__attribute__((__noinline__)) static VALUE vm_setivar_slowpath_ivar(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic);
15675__attribute__((__noinline__)) static VALUE vm_setivar_slowpath_attr(VALUE obj, ID id, VALUE val, const struct rb_callcache *cc);
15677vm_setivar_slowpath(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr)
15679 do { VALUE frozen_obj = (obj); if ((__builtin_expect(!!(RB_OBJ_FROZEN(frozen_obj)), 0))) { rb_error_frozen_object(frozen_obj); } } while (0);
15680 if (RB_TYPE_P(obj, RUBY_T_OBJECT)) {
15681 struct st_table *iv_index_tbl = ROBJECT_IV_INDEX_TBL_inline(obj);
15682 struct rb_iv_index_tbl_entry *ent;
15683 if (iv_index_tbl_lookup(iv_index_tbl, id, &ent)) {
15686 (rb_obj_written((VALUE)(iseq), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(ent->class_value), "./vm_insnhelper.c", 1212));
15688 else if (ent->index >= 0x7fffffff) {
15689 rb_raise(rb_eArgError, "too many instance variables");
15692 vm_cc_attr_index_set(cc, (int)(ent->index + 1));
15694 uint32_t index = ent->index;
15695 if ((__builtin_expect(!!(index >= ROBJECT_NUMIV(obj)), 0))) {
15696 rb_init_iv_list(obj);
15698 VALUE *ptr = ROBJECT_IVPTR(obj);
15699 rb_obj_write((VALUE)(obj), __extension__({
15701 ; __typeof__((VALUE *)(&ptr[index])) unaligned_member_access_result = ((VALUE *)(&ptr[index]));
15702 ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 1227);
15708 return rb_ivar_set(obj, id, val);
15711vm_setivar_slowpath_ivar(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic)
15713 return vm_setivar_slowpath(obj, id, val, iseq, ic, ((void *)0), 0);
15716vm_setivar_slowpath_attr(VALUE obj, ID id, VALUE val, const struct rb_callcache *cc)
15718 return vm_setivar_slowpath(obj, id, val, ((void *)0), ((void *)0), cc, 1);
15721vm_setivar(VALUE obj, ID id, VALUE val, const rb_iseq_t *iseq, IVC ic, const struct rb_callcache *cc, int is_attr)
15723 if ((__builtin_expect(!!(RB_TYPE_P(obj, RUBY_T_OBJECT)), 1)) &&
15724 (__builtin_expect(!!(!RB_OBJ_FROZEN_RAW(obj)), 1))) {
15726 if ((__builtin_expect(!!((!is_attr && (!!(ic->entry && ic->entry->class_serial == (((struct RClass *)(((struct RBasic *)(obj))->klass))->class_serial)))) || ( is_attr && (!!(vm_cc_attr_index(cc) > 0)))), 1))) {
15727 uint32_t index = !is_attr ? ic->entry->index : vm_cc_attr_index(cc)-1;
15728 if ((__builtin_expect(!!(index >= ROBJECT_NUMIV(obj)), 0))) {
15729 rb_init_iv_list(obj);
15731 VALUE *ptr = ROBJECT_IVPTR(obj);
15732 rb_obj_write((VALUE)(obj), __extension__({
15734 ; __typeof__((VALUE *)(&ptr[index])) unaligned_member_access_result = ((VALUE *)(&ptr[index]));
15735 ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 1268);
15744 return vm_setivar_slowpath_attr(obj, id, val, cc);
15747 return vm_setivar_slowpath_ivar(obj, id, val, iseq, ic);
15751update_classvariable_cache(const rb_iseq_t *iseq, VALUE klass, ID id, ICVARC ic)
15753 VALUE defined_class = 0;
15754 VALUE cvar_value = rb_cvar_find(klass, id, &defined_class);
15755 if (RB_TYPE_P(defined_class, RUBY_T_ICLASS)) {
15756 defined_class = ((struct RBasic *)(defined_class))->klass;
15758 struct rb_id_table *rb_cvc_tbl = ((((struct RClass *)(defined_class))->ptr)->cvc_tbl);
15760 rb_bug("the cvc table should be set");
15763 if (!rb_id_table_lookup(rb_cvc_tbl, id, &ent_data)) {
15764 rb_bug("should have cvar cache entry");
15766 struct rb_cvar_class_tbl_entry *ent = (void *)ent_data;
15767 ent->global_cvar_state = (ruby_vm_global_cvar_state);
15769 (rb_obj_written((VALUE)(iseq), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(ent->class_value), "./vm_insnhelper.c", 1309));
15773vm_getclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *reg_cfp, ID id, ICVARC ic)
15775 const rb_cref_t *cref;
15776 if (ic->entry && ic->entry->global_cvar_state == (ruby_vm_global_cvar_state)) {
15777 VALUE v = ((VALUE)RUBY_Qundef);
15779 if (rb_st_lookup(((((struct RClass *)(ic->entry->class_value))->ptr)->iv_tbl), (st_data_t)id, &v) &&
15780 (__builtin_expect(!!(rb_ractor_main_p()), 1))) {
15784 cref = vm_get_cref(((((reg_cfp)->ep))));
15785 VALUE klass = vm_get_cvar_base(cref, reg_cfp, 1);
15786 return update_classvariable_cache(iseq, klass, id, ic);
15789rb_vm_getclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *cfp, ID id, ICVARC ic)
15791 return vm_getclassvariable(iseq, cfp, id, ic);
15794vm_setclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *reg_cfp, ID id, VALUE val, ICVARC ic)
15796 const rb_cref_t *cref;
15797 if (ic->entry && ic->entry->global_cvar_state == (ruby_vm_global_cvar_state)) {
15799 rb_class_ivar_set(ic->entry->class_value, id, val);
15802 cref = vm_get_cref(((((reg_cfp)->ep))));
15803 VALUE klass = vm_get_cvar_base(cref, reg_cfp, 1);
15804 rb_cvar_set(klass, id, val);
15805 update_classvariable_cache(iseq, klass, id, ic);
15808rb_vm_setclassvariable(const rb_iseq_t *iseq, const rb_control_frame_t *cfp, ID id, VALUE val, ICVARC ic)
15810 vm_setclassvariable(iseq, cfp, id, val, ic);
15813vm_getinstancevariable(const rb_iseq_t *iseq, VALUE obj, ID id, IVC ic)
15815 return vm_getivar(obj, id, iseq, ic, ((void *)0), 0);
15818vm_setinstancevariable(const rb_iseq_t *iseq, VALUE obj, ID id, VALUE val, IVC ic)
15820 vm_setivar(obj, id, val, iseq, ic, 0, 0);
15823rb_vm_setinstancevariable(const rb_iseq_t *iseq, VALUE obj, ID id, VALUE val, IVC ic)
15825 vm_setinstancevariable(iseq, obj, id, val, ic);
15828rb_vm_set_ivar_idx(VALUE obj, uint32_t index, VALUE val)
15831 do { VALUE frozen_obj = (obj); if ((__builtin_expect(!!(RB_OBJ_FROZEN(frozen_obj)), 0))) { rb_error_frozen_object(frozen_obj); } } while (0);
15833 if ((__builtin_expect(!!(index >= ROBJECT_NUMIV(obj)), 0))) {
15834 rb_init_iv_list(obj);
15836 VALUE *ptr = ROBJECT_IVPTR(obj);
15837 rb_obj_write((VALUE)(obj), __extension__({
15839 ; __typeof__((VALUE *)(&ptr[index])) unaligned_member_access_result = ((VALUE *)(&ptr[index]));
15840 ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 1403);
15844vm_throw_continue(const rb_execution_context_t *ec, VALUE err)
15846 if (RB_FIXNUM_P(err)) {
15847 ec->tag->state = RB_FIX2INT(err);
15849 else if (RB_SYMBOL_P(err)) {
15850 ec->tag->state = RUBY_TAG_THROW;
15852 else if (imemo_throw_data_p((VALUE)err)) {
15853 ec->tag->state = THROW_DATA_STATE((struct vm_throw_data *)err);
15856 ec->tag->state = RUBY_TAG_RAISE;
15861vm_throw_start(const rb_execution_context_t *ec, rb_control_frame_t *const reg_cfp, enum ruby_tag_type state,
15862 const int flag, const VALUE throwobj)
15864 const rb_control_frame_t *escape_cfp = ((void *)0);
15865 const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec);
15868 else if (state == RUBY_TAG_BREAK) {
15870 const VALUE *ep = ((((reg_cfp)->ep)));
15871 const rb_iseq_t *base_iseq = ((((reg_cfp)))->iseq);
15872 escape_cfp = reg_cfp;
15873 while (base_iseq->body->type != ISEQ_TYPE_BLOCK) {
15874 if (escape_cfp->iseq->body->type == ISEQ_TYPE_CLASS) {
15875 escape_cfp = ((escape_cfp)+1);
15876 ep = escape_cfp->ep;
15877 base_iseq = escape_cfp->iseq;
15880 ep = VM_ENV_PREV_EP(ep);
15881 base_iseq = base_iseq->body->parent_iseq;
15882 escape_cfp = rb_vm_search_cf_from_ep(ec, escape_cfp, ep);
15886 if (VM_FRAME_LAMBDA_P(escape_cfp)) {
15888 state = RUBY_TAG_RETURN;
15891 ep = VM_ENV_PREV_EP(ep);
15892 while (escape_cfp < eocfp) {
15893 if (escape_cfp->ep == ep) {
15894 const rb_iseq_t *const iseq = escape_cfp->iseq;
15895 const VALUE epc = escape_cfp->pc - iseq->body->iseq_encoded;
15896 const struct iseq_catch_table *const ct = iseq->body->catch_table;
15899 for (i=0; i < ct->size; i++) {
15900 const struct iseq_catch_table_entry *const entry =
15903 ; __typeof__(&(ct)->entries[i]) unaligned_member_access_result = (&(ct)->entries[i]);
15904 ; unaligned_member_access_result; });
15905 if (entry->type == CATCH_TYPE_BREAK &&
15906 entry->iseq == base_iseq &&
15907 entry->start < epc && entry->end >= epc) {
15908 if (entry->cont == epc) {
15916 escape_cfp = ((escape_cfp)+1);
15920 rb_vm_localjump_error("break from proc-closure", throwobj, RUBY_TAG_BREAK);
15923 else if (state == RUBY_TAG_RETRY) {
15924 const VALUE *ep = VM_ENV_PREV_EP(((((reg_cfp)->ep))));
15925 escape_cfp = rb_vm_search_cf_from_ep(ec, reg_cfp, ep);
15927 else if (state == RUBY_TAG_RETURN) {
15928 const VALUE *current_ep = ((((reg_cfp)->ep)));
15929 const VALUE *target_ep = ((void *)0), *target_lep, *ep = current_ep;
15930 int in_class_frame = 0;
15932 escape_cfp = reg_cfp;
15933 while (!VM_ENV_LOCAL_P(ep)) {
15934 if (VM_ENV_FLAGS(ep, VM_FRAME_FLAG_LAMBDA) && target_ep == ((void *)0)) {
15937 ep = VM_ENV_PREV_EP(ep);
15940 while (escape_cfp < eocfp) {
15941 const VALUE *lep = VM_CF_LEP(escape_cfp);
15945 if (lep == target_lep &&
15946 VM_FRAME_RUBYFRAME_P(escape_cfp) &&
15947 escape_cfp->iseq->body->type == ISEQ_TYPE_CLASS) {
15948 in_class_frame = 1;
15951 if (lep == target_lep) {
15952 if (VM_FRAME_LAMBDA_P(escape_cfp)) {
15954 if (in_class_frame) {
15958 const VALUE *tep = current_ep;
15959 while (target_lep != tep) {
15960 if (escape_cfp->ep == tep) {
15961 if (tep == target_ep) {
15965 goto unexpected_return;
15968 tep = VM_ENV_PREV_EP(tep);
15972 else if (VM_FRAME_RUBYFRAME_P(escape_cfp)) {
15973 switch (escape_cfp->iseq->body->type) {
15974 case ISEQ_TYPE_TOP:
15975 case ISEQ_TYPE_MAIN:
15977 if (in_class_frame) goto unexpected_return;
15978 if (target_ep == ((void *)0)) {
15982 goto unexpected_return;
15986 case ISEQ_TYPE_EVAL:
15987 case ISEQ_TYPE_CLASS:
15995 if (escape_cfp->ep == target_lep && escape_cfp->iseq->body->type == ISEQ_TYPE_METHOD) {
15996 if (target_ep == ((void *)0)) {
16000 goto unexpected_return;
16003 escape_cfp = ((escape_cfp)+1);
16005 unexpected_return:;
16006 rb_vm_localjump_error("unexpected return", throwobj, RUBY_TAG_RETURN);
16010 rb_bug("isns(throw): unsupported throw type");
16012 ec->tag->state = state;
16013 return (VALUE)THROW_DATA_NEW(throwobj, escape_cfp, state);
16016vm_throw(const rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
16017 rb_num_t throw_state, VALUE throwobj)
16019 const int state = (int)(throw_state & VM_THROW_STATE_MASK);
16020 const int flag = (int)(throw_state & VM_THROW_NO_ESCAPE_FLAG);
16022 return vm_throw_start(ec, reg_cfp, state, flag, throwobj);
16025 return vm_throw_continue(ec, throwobj);
16029vm_expandarray(VALUE *sp, VALUE ary, rb_num_t num, int flag)
16031 int is_splat = flag & 0x01;
16032 rb_num_t space_size = num + is_splat;
16033 VALUE *base = sp - 1;
16036 const VALUE obj = ary;
16037 if (!RB_TYPE_P(ary, RUBY_T_ARRAY) && RB_NIL_P(ary = rb_check_array_type(ary))) {
16043 ptr = rb_array_const_ptr_transient(ary);
16044 len = (rb_num_t)rb_array_len(ary);
16046 if (space_size == 0) {
16048 else if (flag & 0x02) {
16051 for (i=0; i<num-len; i++) {
16052 *base++ = ((VALUE)RUBY_Qnil);
16055 for (j=0; i<num; i++, j++) {
16056 VALUE v = ptr[len - j - 1];
16060 *base = rb_ary_new_from_values(len - j, ptr);
16065 VALUE *bptr = &base[space_size - 1];
16066 for (i=0; i<num; i++) {
16068 for (; i<num; i++) {
16069 *bptr-- = ((VALUE)RUBY_Qnil);
16077 *bptr = rb_ary_new();
16080 *bptr = rb_ary_new_from_values(len - num, ptr + num);
16084 (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(ary); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }));
16086static VALUE vm_call_general(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling);
16087static VALUE vm_mtbl_dump(VALUE klass, ID target_mid);
16088static struct rb_class_cc_entries *
16089vm_ccs_create(VALUE klass, const rb_callable_method_entry_t *cme)
16091 struct rb_class_cc_entries *ccs = ((struct rb_class_cc_entries *)ruby_xmalloc(sizeof(struct rb_class_cc_entries)));
16094 rb_obj_write((VALUE)(klass), __extension__({
16096 ; __typeof__((VALUE *)(&ccs->cme)) unaligned_member_access_result = ((VALUE *)(&ccs->cme));
16097 ; unaligned_member_access_result; }), (VALUE)(cme), "./vm_insnhelper.c", 1700);
16098 (((rb_callable_method_entry_t *)cme)->flags |= ((VALUE)RUBY_FL_USER8));
16099 ccs->entries = ((void *)0);
16103vm_ccs_push(VALUE klass, struct rb_class_cc_entries *ccs, const struct rb_callinfo *ci, const struct rb_callcache *cc)
16105 if (! vm_cc_markable(cc)) {
16108 else if (! vm_ci_markable(ci)) {
16111 if ((__builtin_expect(!!(ccs->len == ccs->capa), 0))) {
16112 if (ccs->capa == 0) {
16114 ccs->entries = ((struct rb_class_cc_entries_entry *)ruby_xmalloc2((ccs->capa), sizeof(struct rb_class_cc_entries_entry)));
16118 ((ccs->entries) = ((struct rb_class_cc_entries_entry *)ruby_xrealloc2((void *)(ccs->entries), (ccs->capa), sizeof(struct rb_class_cc_entries_entry))));
16122 const int pos = ccs->len++;
16123 rb_obj_write((VALUE)(klass), __extension__({
16125 ; __typeof__((VALUE *)(&ccs->entries[pos].ci)) unaligned_member_access_result = ((VALUE *)(&ccs->entries[pos].ci));
16126 ; unaligned_member_access_result; }), (VALUE)(ci), "./vm_insnhelper.c", 1729);
16127 rb_obj_write((VALUE)(klass), __extension__({
16129 ; __typeof__((VALUE *)(&ccs->entries[pos].cc)) unaligned_member_access_result = ((VALUE *)(&ccs->entries[pos].cc));
16130 ; unaligned_member_access_result; }), (VALUE)(cc), "./vm_insnhelper.c", 1730);
16134static const struct rb_callcache *
16135vm_search_method_slowpath0(VALUE cd_owner, struct rb_call_data *cd, VALUE klass)
16137 const struct rb_callcache *cc = rb_vm_search_method_slowpath(cd->ci, klass);
16139 const struct rb_callcache *empty_cc =
16141 if (cd_owner && cc != empty_cc) (rb_obj_written((VALUE)(cd_owner), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(cc), "./vm_insnhelper.c", 1912));
16145static const struct rb_callcache *
16146vm_search_method_fastpath(VALUE cd_owner, struct rb_call_data *cd, VALUE klass)
16148 const struct rb_callcache *cc = cd->cc;
16149 if ((__builtin_expect(!!(vm_cc_class_check(cc, klass)), 1))) {
16150 if ((__builtin_expect(!!(!((vm_cc_cme(cc))->flags & ((VALUE)RUBY_FL_USER9))), 1))) {
16161 return vm_search_method_slowpath0(cd_owner, cd, klass);
16163static const struct rb_callcache *
16164vm_search_method(VALUE cd_owner, struct rb_call_data *cd, VALUE recv)
16166 VALUE klass = rb_class_of(recv);
16169 return vm_search_method_fastpath(cd_owner, cd, klass);
16172check_cfunc(const rb_callable_method_entry_t *me, VALUE (*func)())
16181 if (me->def->type != VM_METHOD_TYPE_CFUNC) {
16185 return me->def->body.cfunc.func == func;
16190vm_method_cfunc_is(const rb_iseq_t *iseq, CALL_DATA cd, VALUE recv, VALUE (*func)())
16193 const struct rb_callcache *cc = vm_search_method((VALUE)iseq, cd, recv);
16194 return check_cfunc(vm_cc_cme(cc), func);
16197FIXNUM_2_P(VALUE a, VALUE b)
16201 long z = x & y & 1;
16205FLONUM_2_P(VALUE a, VALUE b)
16209 long z = ((x ^ 2) | (y ^ 2)) & 3;
16213opt_equality_specialized(VALUE recv, VALUE obj)
16215 if (FIXNUM_2_P(recv, obj) && ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 0))) == 0), 1)))) {
16216 goto compare_by_identity;
16218 else if (FLONUM_2_P(recv, obj) && ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) {
16219 goto compare_by_identity;
16221 else if (RB_STATIC_SYM_P(recv) && RB_STATIC_SYM_P(obj) && ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 6))) == 0), 1)))) {
16222 goto compare_by_identity;
16224 else if (RB_SPECIAL_CONST_P(recv)) {
16226 else if (RBASIC_CLASS(recv) == rb_cFloat && RB_FLOAT_TYPE_P(obj) && ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) {
16227 double a = rb_float_value_inline(recv);
16228 double b = rb_float_value_inline(obj);
16229 return ((a == b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
16231 else if (RBASIC_CLASS(recv) == rb_cString && ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 2))) == 0), 1)))) {
16233 return ((VALUE)RUBY_Qtrue);
16235 else if (RB_TYPE_P(obj, RUBY_T_STRING)) {
16236 return rb_str_eql_internal(obj, recv);
16239 return ((VALUE)RUBY_Qundef);
16240 compare_by_identity:
16241 return ((recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
16244opt_equality(const rb_iseq_t *cd_owner, VALUE recv, VALUE obj, CALL_DATA cd)
16247 VALUE val = opt_equality_specialized(recv, obj);
16248 if (val != ((VALUE)RUBY_Qundef)) return val;
16249 if (!vm_method_cfunc_is(cd_owner, cd, recv, rb_obj_equal)) {
16250 return ((VALUE)RUBY_Qundef);
16253 return ((recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
16256extern VALUE rb_vm_call0(rb_execution_context_t *ec, VALUE, ID, int, const VALUE*, const rb_callable_method_entry_t *, int kw_splat);
16257extern VALUE rb_vm_call_with_refinements(rb_execution_context_t *, VALUE, ID, int, const VALUE *, int);
16259check_match(rb_execution_context_t *ec, VALUE pattern, VALUE target, enum vm_check_match_type type)
16262 case VM_CHECKMATCH_TYPE_WHEN:
16264 case VM_CHECKMATCH_TYPE_RESCUE:
16265 if (!rb_obj_is_kind_of(pattern, rb_cModule)) {
16266 rb_raise(rb_eTypeError, "class or module required for rescue clause");
16268 case VM_CHECKMATCH_TYPE_CASE: {
16269 return rb_vm_call_with_refinements(ec, pattern, idEqq, 1, &target, 0);
16272 rb_bug("check_match: unreachable");
16276double_cmp_lt(double a, double b)
16279 return ((a < b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
16282double_cmp_le(double a, double b)
16285 return ((a <= b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
16288double_cmp_gt(double a, double b)
16291 return ((a > b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
16294double_cmp_ge(double a, double b)
16297 return ((a >= b) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
16299static inline VALUE *
16300vm_base_ptr(const rb_control_frame_t *cfp)
16302 return cfp->__bp__;
16304__attribute__((__noreturn__)) static void raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc);
16305__attribute__((__noreturn__)) static void argument_arity_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int miss_argc, const int min_argc, const int max_argc);
16306__attribute__((__noreturn__)) static void argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys);
16307VALUE rb_keyword_error_new(const char *error, VALUE keys);
16308static VALUE method_missing(rb_execution_context_t *ec, VALUE obj, ID id, int argc, const VALUE *argv,
16309 enum method_missing_reason call_status, int kw_splat);
16310__attribute__ ((__visibility__("default"))) extern
16311const rb_callable_method_entry_t *rb_resolve_refined_method_callable(VALUE refinements, const rb_callable_method_entry_t *me);
16317 const struct rb_callinfo_kwarg *kw_arg;
16321enum arg_setup_type {
16326arg_rest_dup(struct args_info *args)
16328 if (!args->rest_dupped) {
16329 args->rest = rb_ary_dup(args->rest);
16330 args->rest_dupped = 1;
16334args_argc(struct args_info *args)
16336 if (args->rest == ((VALUE)RUBY_Qfalse)) {
16340 return args->argc + RARRAY_LENINT(args->rest) - args->rest_index;
16344args_extend(struct args_info *args, const int min_argc)
16348 arg_rest_dup(args);
16350 for (i=args->argc + RARRAY_LENINT(args->rest); i<min_argc; i++) {
16351 rb_ary_push(args->rest, ((VALUE)RUBY_Qnil));
16355 for (i=args->argc; i<min_argc; i++) {
16356 args->argv[args->argc++] = ((VALUE)RUBY_Qnil);
16361args_reduce(struct args_info *args, int over_argc)
16364 const long len = rb_array_len(args->rest);
16365 if (len > over_argc) {
16366 arg_rest_dup(args);
16367 rb_ary_resize(args->rest, len - over_argc);
16371 args->rest = ((VALUE)RUBY_Qfalse);
16376 args->argc -= over_argc;
16379args_check_block_arg0(struct args_info *args)
16381 VALUE ary = ((VALUE)RUBY_Qnil);
16382 if (args->rest && rb_array_len(args->rest) == 1) {
16383 VALUE arg0 = RARRAY_AREF(args->rest, 0);
16384 ary = rb_check_array_type(arg0);
16386 else if (args->argc == 1) {
16387 VALUE arg0 = args->argv[0];
16388 ary = rb_check_array_type(arg0);
16389 args->argv[0] = arg0;
16391 if (!RB_NIL_P(ary)) {
16393 args->rest_index = 0;
16400args_copy(struct args_info *args)
16402 if (args->rest != ((VALUE)RUBY_Qfalse)) {
16403 int argc = args->argc;
16405 arg_rest_dup(args);
16406 while (args->rest_index > 0 && argc > 0) {
16407 RARRAY_ASET(args->rest, --args->rest_index, args->argv[--argc]);
16410 rb_ary_unshift(args->rest, args->argv[--argc]);
16413 else if (args->argc > 0) {
16414 args->rest = rb_ary_new_from_values(args->argc, args->argv);
16415 args->rest_index = 0;
16416 args->rest_dupped = 1;
16420static inline const VALUE *
16421args_rest_argv(struct args_info *args)
16423 return rb_array_const_ptr_transient(args->rest) + args->rest_index;
16426args_rest_array(struct args_info *args)
16430 ary = rb_ary_behead(args->rest, args->rest_index);
16431 args->rest_index = 0;
16435 ary = rb_ary_new();
16440args_kw_argv_to_hash(struct args_info *args)
16442 const struct rb_callinfo_kwarg *kw_arg = args->kw_arg;
16443 const VALUE *const passed_keywords = kw_arg->keywords;
16444 const int kw_len = kw_arg->keyword_len;
16445 VALUE h = rb_hash_new_with_size(kw_len);
16446 const int kw_start = args->argc - kw_len;
16447 const VALUE * const kw_argv = args->argv + kw_start;
16449 args->argc = kw_start + 1;
16450 for (i=0; i<kw_len; i++) {
16451 rb_hash_aset(h, passed_keywords[i], kw_argv[i]);
16453 args->argv[args->argc - 1] = h;
16457args_setup_lead_parameters(struct args_info *args, int argc, VALUE *locals)
16459 if (args->argc >= argc) {
16460 args->argc -= argc;
16461 args->argv += argc;
16465 const VALUE *argv = args_rest_argv(args);
16466 for (i=args->argc, j=0; i<argc; i++, j++) {
16467 locals[i] = argv[j];
16469 args->rest_index += argc - args->argc;
16474args_setup_post_parameters(struct args_info *args, int argc, VALUE *locals)
16477 len = rb_array_len(args->rest);
16478 ruby_nonempty_memcpy((locals), (rb_array_const_ptr_transient(args->rest) + len - argc), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc)));
16479 rb_ary_resize(args->rest, len - argc);
16482args_setup_opt_parameters(struct args_info *args, int opt_max, VALUE *locals)
16485 if (args->argc >= opt_max) {
16486 args->argc -= opt_max;
16487 args->argv += opt_max;
16495 int len = RARRAY_LENINT(args->rest);
16496 const VALUE *argv = rb_array_const_ptr_transient(args->rest);
16497 for (; i<opt_max && args->rest_index < len; i++, args->rest_index++) {
16498 locals[i] = argv[args->rest_index];
16501 for (j=i; j<opt_max; j++) {
16502 locals[j] = ((VALUE)RUBY_Qnil);
16508args_setup_rest_parameter(struct args_info *args, VALUE *locals)
16510 *locals = args_rest_array(args);
16513make_unknown_kw_hash(const VALUE *passed_keywords, int passed_keyword_len, const VALUE *kw_argv)
16516 VALUE obj = rb_ary_tmp_new(1);
16517 for (i=0; i<passed_keyword_len; i++) {
16518 if (kw_argv[i] != ((VALUE)RUBY_Qundef)) {
16519 rb_ary_push(obj, passed_keywords[i]);
16525make_rest_kw_hash(const VALUE *passed_keywords, int passed_keyword_len, const VALUE *kw_argv)
16528 VALUE obj = rb_hash_new_with_size(passed_keyword_len);
16529 for (i=0; i<passed_keyword_len; i++) {
16530 if (kw_argv[i] != ((VALUE)RUBY_Qundef)) {
16531 rb_hash_aset(obj, passed_keywords[i], kw_argv[i]);
16537args_setup_kw_parameters_lookup(const ID key, VALUE *ptr, const VALUE *const passed_keywords, VALUE *passed_values, const int passed_keyword_len)
16540 const VALUE keyname = rb_id2sym(key);
16541 for (i=0; i<passed_keyword_len; i++) {
16542 if (keyname == passed_keywords[i]) {
16543 *ptr = passed_values[i];
16544 passed_values[i] = ((VALUE)RUBY_Qundef);
16551args_setup_kw_parameters(rb_execution_context_t *const ec, const rb_iseq_t *const iseq,
16552 VALUE *const passed_values, const int passed_keyword_len, const VALUE *const passed_keywords,
16553 VALUE *const locals)
16555 const ID *acceptable_keywords = iseq->body->param.keyword->table;
16556 const int req_key_num = iseq->body->param.keyword->required_num;
16557 const int key_num = iseq->body->param.keyword->num;
16558 const VALUE * const default_values = iseq->body->param.keyword->default_values;
16560 int i, di, found = 0;
16561 int unspecified_bits = 0;
16562 VALUE unspecified_bits_value = ((VALUE)RUBY_Qnil);
16563 for (i=0; i<req_key_num; i++) {
16564 ID key = acceptable_keywords[i];
16565 if (args_setup_kw_parameters_lookup(key, &locals[i], passed_keywords, passed_values, passed_keyword_len)) {
16569 if (!missing) missing = rb_ary_tmp_new(1);
16570 rb_ary_push(missing, rb_id2sym(key));
16573 if (missing) argument_kw_error(ec, iseq, "missing", missing);
16574 for (di=0; i<key_num; i++, di++) {
16575 if (args_setup_kw_parameters_lookup(acceptable_keywords[i], &locals[i], passed_keywords, passed_values, passed_keyword_len)) {
16579 if (default_values[di] == ((VALUE)RUBY_Qundef)) {
16580 locals[i] = ((VALUE)RUBY_Qnil);
16581 if ((__builtin_expect(!!(i < (32-1)), 1))) {
16582 unspecified_bits |= 0x01 << di;
16585 if (RB_NIL_P(unspecified_bits_value)) {
16587 unspecified_bits_value = rb_hash_new();
16588 for (j=0; j<(32-1); j++) {
16589 if (unspecified_bits & (0x01 << j)) {
16590 rb_hash_aset(unspecified_bits_value, __builtin_choose_expr( __builtin_constant_p(j), ((VALUE)(j)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(j)), ((VALUE)RUBY_Qtrue));
16594 rb_hash_aset(unspecified_bits_value, __builtin_choose_expr( __builtin_constant_p(di), ((VALUE)(di)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(di)), ((VALUE)RUBY_Qtrue));
16598 locals[i] = default_values[di];
16602 if (iseq->body->param.flags.has_kwrest) {
16603 const int rest_hash_index = key_num + 1;
16604 locals[rest_hash_index] = make_rest_kw_hash(passed_keywords, passed_keyword_len, passed_values);
16607 if (found != passed_keyword_len) {
16608 VALUE keys = make_unknown_kw_hash(passed_keywords, passed_keyword_len, passed_values);
16609 argument_kw_error(ec, iseq, "unknown", keys);
16612 if (RB_NIL_P(unspecified_bits_value)) {
16613 unspecified_bits_value = __builtin_choose_expr( __builtin_constant_p(unspecified_bits), ((VALUE)(unspecified_bits)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(unspecified_bits));
16615 locals[key_num] = unspecified_bits_value;
16618args_setup_kw_rest_parameter(VALUE keyword_hash, VALUE *locals, int kw_flag)
16620 if (RB_NIL_P(keyword_hash)) {
16621 keyword_hash = rb_hash_new();
16623 else if (!(kw_flag & (0x01 << VM_CALL_KW_SPLAT_MUT_bit))) {
16624 keyword_hash = rb_hash_dup(keyword_hash);
16626 locals[0] = keyword_hash;
16629args_setup_block_parameter(const rb_execution_context_t *ec, struct rb_calling_info *calling, VALUE *locals)
16631 VALUE block_handler = calling->block_handler;
16632 *locals = rb_vm_bh_to_procval(ec, block_handler);
16634struct fill_values_arg {
16640fill_keys_values(st_data_t key, st_data_t val, st_data_t ptr)
16642 struct fill_values_arg *arg = (struct fill_values_arg *)ptr;
16643 int i = arg->argc++;
16644 arg->keys[i] = (VALUE)key;
16645 arg->vals[i] = (VALUE)val;
16646 return ST_CONTINUE;
16649ignore_keyword_hash_p(VALUE keyword_hash, const rb_iseq_t * const iseq, unsigned int * kw_flag, VALUE * converted_keyword_hash)
16651 if (!RB_TYPE_P(keyword_hash, RUBY_T_HASH)) {
16652 keyword_hash = rb_to_hash_type(keyword_hash);
16654 if (!(*kw_flag & (0x01 << VM_CALL_KW_SPLAT_MUT_bit)) &&
16655 (iseq->body->param.flags.has_kwrest ||
16656 iseq->body->param.flags.ruby2_keywords)) {
16657 *kw_flag |= (0x01 << VM_CALL_KW_SPLAT_MUT_bit);
16658 keyword_hash = rb_hash_dup(keyword_hash);
16660 *converted_keyword_hash = keyword_hash;
16661 return !(iseq->body->param.flags.has_kw) &&
16662 !(iseq->body->param.flags.has_kwrest) &&
16663 RHASH_EMPTY_P(keyword_hash);
16666setup_parameters_complex(rb_execution_context_t * const ec, const rb_iseq_t * const iseq,
16667 struct rb_calling_info *const calling,
16668 const struct rb_callinfo *ci,
16669 VALUE * const locals, const enum arg_setup_type arg_setup_type) {
16670 const int min_argc = iseq->body->param.lead_num + iseq->body->param.post_num;
16671 const int max_argc = (iseq->body->param.flags.has_rest == 0) ? min_argc + iseq->body->param.opt_num : (-1);
16673 unsigned int kw_flag = vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit));
16674 int opt_pc = 0, allow_autosplat = !kw_flag;
16675 struct args_info args_body, *args;
16676 VALUE keyword_hash = ((VALUE)RUBY_Qnil);
16677 VALUE * const orig_sp = ec->cfp->sp;
16679 VALUE flag_keyword_hash = 0;
16680 VALUE converted_keyword_hash = 0;
16682 for (i=calling->argc; i<iseq->body->param.size; i++) {
16683 locals[i] = ((VALUE)RUBY_Qnil);
16685 ec->cfp->sp = &locals[i];
16687 given_argc = args->argc = calling->argc;
16688 args->argv = locals;
16689 args->rest_dupped = 0;
16690 if (kw_flag & (0x01 << VM_CALL_KWARG_bit)) {
16691 args->kw_arg = vm_ci_kwarg(ci);
16692 if (iseq->body->param.flags.has_kw) {
16693 int kw_len = args->kw_arg->keyword_len;
16694 args->kw_argv = ((VALUE *)__builtin_alloca (rbimpl_size_mul_or_raise(sizeof(VALUE), (kw_len))));
16695 args->argc -= kw_len;
16696 given_argc -= kw_len;
16697 ruby_nonempty_memcpy((args->kw_argv), (locals + args->argc), rbimpl_size_mul_or_raise(sizeof(VALUE), (kw_len)));
16700 args->kw_argv = ((void *)0);
16701 given_argc = args_kw_argv_to_hash(args);
16702 kw_flag |= (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit);
16706 args->kw_arg = ((void *)0);
16707 args->kw_argv = ((void *)0);
16709 if (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) {
16710 VALUE rest_last = 0;
16712 args->rest = locals[--args->argc];
16713 args->rest_index = 0;
16714 len = RARRAY_LENINT(args->rest);
16715 given_argc += len - 1;
16716 rest_last = RARRAY_AREF(args->rest, len - 1);
16717 if (!kw_flag && len > 0) {
16718 if (RB_TYPE_P(rest_last, RUBY_T_HASH) &&
16719 (((struct RHash *)rest_last)->basic.flags & RHASH_PASS_AS_KEYWORDS)) {
16720 rest_last = rb_hash_dup(rest_last);
16721 kw_flag |= (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit);
16727 if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
16728 if (ignore_keyword_hash_p(rest_last, iseq, &kw_flag, &converted_keyword_hash)) {
16729 arg_rest_dup(args);
16730 rb_ary_pop(args->rest);
16732 kw_flag &= ~((0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit));
16735 if (rest_last != converted_keyword_hash) {
16736 rest_last = converted_keyword_hash;
16737 arg_rest_dup(args);
16738 RARRAY_ASET(args->rest, len - 1, rest_last);
16740 if (iseq->body->param.flags.ruby2_keywords && rest_last) {
16741 flag_keyword_hash = rest_last;
16743 else if (iseq->body->param.flags.has_kw || iseq->body->param.flags.has_kwrest) {
16744 arg_rest_dup(args);
16745 rb_ary_pop(args->rest);
16747 keyword_hash = rest_last;
16753 if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
16754 VALUE last_arg = args->argv[args->argc-1];
16755 if (ignore_keyword_hash_p(last_arg, iseq, &kw_flag, &converted_keyword_hash)) {
16758 kw_flag &= ~((0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_MUT_bit));
16761 if (last_arg != converted_keyword_hash) {
16762 last_arg = converted_keyword_hash;
16763 args->argv[args->argc-1] = last_arg;
16765 if (iseq->body->param.flags.ruby2_keywords) {
16766 flag_keyword_hash = last_arg;
16768 else if (iseq->body->param.flags.has_kw || iseq->body->param.flags.has_kwrest) {
16771 keyword_hash = last_arg;
16775 args->rest = ((VALUE)RUBY_Qfalse);
16777 if (flag_keyword_hash && RB_TYPE_P(flag_keyword_hash, RUBY_T_HASH)) {
16778 ((struct RHash *)flag_keyword_hash)->basic.flags |= RHASH_PASS_AS_KEYWORDS;
16780 if (kw_flag && iseq->body->param.flags.accepts_no_kwarg) {
16781 rb_raise(rb_eArgError, "no keywords accepted");
16783 switch (arg_setup_type) {
16784 case arg_setup_method:
16786 case arg_setup_block:
16787 if (given_argc == (RB_NIL_P(keyword_hash) ? 1 : 2) &&
16789 (min_argc > 0 || iseq->body->param.opt_num > 1) &&
16790 !iseq->body->param.flags.ambiguous_param0 &&
16791 args_check_block_arg0(args)) {
16792 given_argc = RARRAY_LENINT(args->rest);
16796 if (given_argc < min_argc) {
16797 if (arg_setup_type == arg_setup_block) {
16798 do { __extension__ _Static_assert(sizeof(*((ec->cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((ec->cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((ec->cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((ec->cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((ec->cfp)->sp)[((min_argc))]; if ((__builtin_expect(!!(((ec->cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
16799 given_argc = min_argc;
16800 args_extend(args, min_argc);
16803 argument_arity_error(ec, iseq, given_argc, min_argc, max_argc);
16806 if (given_argc > max_argc && max_argc != (-1)) {
16807 if (arg_setup_type == arg_setup_block) {
16808 args_reduce(args, given_argc - max_argc);
16809 given_argc = max_argc;
16812 argument_arity_error(ec, iseq, given_argc, min_argc, max_argc);
16815 if (iseq->body->param.flags.has_lead) {
16816 args_setup_lead_parameters(args, iseq->body->param.lead_num, locals + 0);
16818 if (iseq->body->param.flags.has_rest || iseq->body->param.flags.has_post){
16821 if (iseq->body->param.flags.has_post) {
16822 args_setup_post_parameters(args, iseq->body->param.post_num, locals + iseq->body->param.post_start);
16824 if (iseq->body->param.flags.has_opt) {
16825 int opt = args_setup_opt_parameters(args, iseq->body->param.opt_num, locals + iseq->body->param.lead_num);
16826 opt_pc = (int)iseq->body->param.opt_table[opt];
16828 if (iseq->body->param.flags.has_rest) {
16829 args_setup_rest_parameter(args, locals + iseq->body->param.rest_start);
16831 if (iseq->body->param.flags.has_kw) {
16832 VALUE * const klocals = locals + iseq->body->param.keyword->bits_start - iseq->body->param.keyword->num;
16833 if (args->kw_argv != ((void *)0)) {
16834 const struct rb_callinfo_kwarg *kw_arg = args->kw_arg;
16835 args_setup_kw_parameters(ec, iseq, args->kw_argv, kw_arg->keyword_len, kw_arg->keywords, klocals);
16837 else if (!RB_NIL_P(keyword_hash)) {
16838 int kw_len = rb_long2int_inline(RHASH_SIZE(keyword_hash));
16839 struct fill_values_arg arg;
16840 arg.keys = args->kw_argv = ((VALUE *)__builtin_alloca (rbimpl_size_mul_or_raise(sizeof(VALUE), (kw_len * 2))));
16841 arg.vals = arg.keys + kw_len;
16843 rb_hash_foreach(keyword_hash, fill_keys_values, (VALUE)&arg);
16845 args_setup_kw_parameters(ec, iseq, arg.vals, kw_len, arg.keys, klocals);
16849 args_setup_kw_parameters(ec, iseq, ((void *)0), 0, ((void *)0), klocals);
16852 else if (iseq->body->param.flags.has_kwrest) {
16853 args_setup_kw_rest_parameter(keyword_hash, locals + iseq->body->param.keyword->rest_start, kw_flag);
16855 else if (!RB_NIL_P(keyword_hash) && RHASH_SIZE(keyword_hash) > 0 && arg_setup_type == arg_setup_method) {
16856 argument_kw_error(ec, iseq, "unknown", rb_hash_keys(keyword_hash));
16858 if (iseq->body->param.flags.has_block) {
16859 if (iseq->body->local_iseq == iseq) {
16862 args_setup_block_parameter(ec, calling, locals + iseq->body->param.block_start);
16865 ec->cfp->sp = orig_sp;
16869raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc)
16873 vm_push_frame(ec, iseq, VM_FRAME_MAGIC_DUMMY | VM_ENV_FLAG_LOCAL, ((VALUE)RUBY_Qnil) ,
16874 0 , ((VALUE)RUBY_Qfalse) ,
16875 iseq->body->iseq_encoded,
16876 ec->cfp->sp, 0, 0 );
16877 at = rb_ec_backtrace_object(ec);
16878 rb_backtrace_use_iseq_first_lineno_for_last_location(at);
16879 rb_vm_pop_frame(ec);
16882 at = rb_ec_backtrace_object(ec);
16884 rb_ivar_set(exc, idBt_locations, at);
16885 rb_exc_set_backtrace(exc, at);
16889argument_arity_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int miss_argc, const int min_argc, const int max_argc)
16891 VALUE exc = rb_arity_error_new(miss_argc, min_argc, max_argc);
16892 if (iseq->body->param.flags.has_kw) {
16893 const struct rb_iseq_param_keyword *const kw = iseq->body->param.keyword;
16894 const ID *keywords = kw->table;
16895 int req_key_num = kw->required_num;
16896 if (req_key_num > 0) {
16897 static const char required[] = "; required keywords";
16898 VALUE mesg = rb_attr_get(exc, idMesg);
16899 rb_str_resize(mesg, RSTRING_LEN(mesg)-1);
16900 rb_str_cat(mesg, required, sizeof(required) - 1 - (req_key_num == 1));
16901 ((__builtin_constant_p(":") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((mesg), (":")));
16903 ((__builtin_constant_p(" ") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((mesg), (" ")));
16904 rb_str_append(mesg, rb_id2str(*keywords++));
16905 ((__builtin_constant_p(",") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((mesg), (",")));
16906 } while (--req_key_num);
16907 RSTRING_PTR(mesg)[RSTRING_LEN(mesg)-1] = ')';
16910 raise_argument_error(ec, iseq, exc);
16913argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys)
16915 raise_argument_error(ec, iseq, rb_keyword_error_new(error, keys));
16918vm_caller_setup_arg_splat(rb_control_frame_t *cfp, struct rb_calling_info *calling)
16920 int argc = calling->argc;
16921 VALUE *argv = cfp->sp - argc;
16922 VALUE ary = argv[argc-1];
16925 if (!RB_NIL_P(ary)) {
16926 const VALUE *ptr = rb_array_const_ptr_transient(ary);
16927 long len = rb_array_len(ary), i;
16928 do { __extension__ _Static_assert(sizeof(*((cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((cfp)->sp)[((len))]; if ((__builtin_expect(!!(((cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
16929 for (i = 0; i < len; i++) {
16930 *cfp->sp++ = ptr[i];
16932 calling->argc += i - 1;
16936vm_caller_setup_arg_kw(rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci)
16938 const VALUE *const passed_keywords = vm_ci_kwarg(ci)->keywords;
16939 const int kw_len = vm_ci_kwarg(ci)->keyword_len;
16940 const VALUE h = rb_hash_new_with_size(kw_len);
16941 VALUE *sp = cfp->sp;
16943 for (i=0; i<kw_len; i++) {
16944 rb_hash_aset(h, passed_keywords[i], (sp - kw_len)[i]);
16946 (sp-kw_len)[0] = h;
16947 cfp->sp -= kw_len - 1;
16948 calling->argc -= kw_len - 1;
16949 calling->kw_splat = 1;
16952vm_to_proc(VALUE proc)
16954 if ((__builtin_expect(!!(!rb_obj_is_proc(proc)), 0))) {
16956 const rb_callable_method_entry_t *me =
16957 rb_callable_method_entry_with_refinements(rb_class_of(proc), idTo_proc, ((void *)0));
16959 b = rb_vm_call0(rb_current_execution_context(1), proc, idTo_proc, 0, ((void *)0), me, 0);
16962 b = rb_check_convert_type_with_id(proc, RUBY_T_DATA, "Proc", idTo_proc);
16964 if (RB_NIL_P(b) || !rb_obj_is_proc(b)) {
16965 rb_raise(rb_eTypeError,
16966 "wrong argument type %s (expected Proc)",
16967 rb_obj_classname(proc));
16976refine_sym_proc_call(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg)
16980 const rb_callable_method_entry_t *me = 0;
16981 rb_execution_context_t *ec;
16982 const VALUE symbol = RARRAY_AREF(callback_arg, 0);
16983 const VALUE refinements = RARRAY_AREF(callback_arg, 1);
16984 int kw_splat = rb_keyword_given_p();
16987 rb_raise(rb_eArgError, "no receiver given");
16990 mid = rb_sym2id(symbol);
16991 for (klass = rb_class_of(obj); klass; klass = RCLASS_SUPER(klass)) {
16992 me = rb_callable_method_entry(klass, mid);
16994 me = rb_resolve_refined_method_callable(refinements, me);
16998 ec = rb_current_execution_context(1);
16999 if (!RB_NIL_P(blockarg)) {
17000 vm_passed_block_handler_set(ec, blockarg);
17003 return method_missing(ec, obj, mid, argc, argv, MISSING_NOENTRY, kw_splat);
17005 return rb_vm_call0(ec, obj, mid, argc, argv, me, kw_splat);
17008vm_caller_setup_arg_block(const rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
17009 const struct rb_callinfo *ci, const rb_iseq_t *blockiseq, const int is_super)
17011 if (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_BLOCKARG_bit)) {
17012 VALUE block_code = *(--reg_cfp->sp);
17013 if (RB_NIL_P(block_code)) {
17016 else if (block_code == rb_block_param_proxy) {
17018 VALUE handler = VM_CF_BLOCK_HANDLER(reg_cfp);
17019 reg_cfp->block_code = (const void *) handler;
17022 else if (RB_SYMBOL_P(block_code) && rb_method_basic_definition_p(rb_cSymbol, idTo_proc)) {
17023 const rb_cref_t *cref = vm_env_cref(reg_cfp->ep);
17024 if (cref && !RB_NIL_P(cref->refinements)) {
17025 VALUE ref = cref->refinements;
17026 VALUE func = rb_hash_lookup(ref, block_code);
17027 if (RB_NIL_P(func)) {
17028 VALUE callback_arg = rb_ary_tmp_new(2);
17029 rb_ary_push(callback_arg, block_code);
17030 rb_ary_push(callback_arg, ref);
17031 RB_OBJ_FREEZE_RAW(callback_arg);
17032 func = rb_func_lambda_new(refine_sym_proc_call, callback_arg, 1, (-1));
17033 rb_hash_aset(ref, block_code, func);
17040 return vm_to_proc(block_code);
17043 else if (blockiseq != ((void *)0)) {
17044 struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(reg_cfp);
17045 captured->code.iseq = blockiseq;
17046 return VM_BH_FROM_ISEQ_BLOCK(captured);
17050 return ((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]);
17057static inline VALUE vm_call_iseq_setup_2(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, int opt_pc, int param_size, int local_size);
17058__attribute__ ((__always_inline__)) static VALUE vm_call_iseq_setup_normal(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const rb_callable_method_entry_t *me, int opt_pc, int param_size, int local_size);
17059static inline VALUE vm_call_iseq_setup_tailcall(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, int opt_pc);
17060static VALUE vm_call_super_method(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling);
17061static VALUE vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling);
17062static VALUE vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling);
17063static inline VALUE vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling);
17064static vm_call_handler vm_call_iseq_setup_func(const struct rb_callinfo *ci, const int param_size, const int local_size);
17066vm_call_iseq_setup_tailcall_0start(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
17069 return vm_call_iseq_setup_tailcall(ec, cfp, calling, 0);
17072vm_call_iseq_setup_normal_0start(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
17075 const struct rb_callcache *cc = calling->cc;
17076 const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
17077 int param = iseq->body->param.size;
17078 int local = iseq->body->local_table_size;
17079 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), 0, param, local);
17082rb_simple_iseq_p(const rb_iseq_t *iseq)
17084 return iseq->body->param.flags.has_opt == 0 &&
17085 iseq->body->param.flags.has_rest == 0 &&
17086 iseq->body->param.flags.has_post == 0 &&
17087 iseq->body->param.flags.has_kw == 0 &&
17088 iseq->body->param.flags.has_kwrest == 0 &&
17089 iseq->body->param.flags.accepts_no_kwarg == 0 &&
17090 iseq->body->param.flags.has_block == 0;
17092__attribute__ ((__visibility__("default"))) _Bool
17093rb_iseq_only_optparam_p(const rb_iseq_t *iseq)
17095 return iseq->body->param.flags.has_opt == 1 &&
17096 iseq->body->param.flags.has_rest == 0 &&
17097 iseq->body->param.flags.has_post == 0 &&
17098 iseq->body->param.flags.has_kw == 0 &&
17099 iseq->body->param.flags.has_kwrest == 0 &&
17100 iseq->body->param.flags.accepts_no_kwarg == 0 &&
17101 iseq->body->param.flags.has_block == 0;
17103__attribute__ ((__visibility__("default"))) _Bool
17104rb_iseq_only_kwparam_p(const rb_iseq_t *iseq)
17106 return iseq->body->param.flags.has_opt == 0 &&
17107 iseq->body->param.flags.has_rest == 0 &&
17108 iseq->body->param.flags.has_post == 0 &&
17109 iseq->body->param.flags.has_kw == 1 &&
17110 iseq->body->param.flags.has_kwrest == 0 &&
17111 iseq->body->param.flags.has_block == 0;
17114rb_splat_or_kwargs_p(const struct rb_callinfo *__restrict__ ci)
17116 return (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) || (vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit)));
17119CALLER_SETUP_ARG(struct rb_control_frame_struct *__restrict__ cfp,
17120 struct rb_calling_info *__restrict__ calling,
17121 const struct rb_callinfo *__restrict__ ci)
17123 if ((__builtin_expect(!!((vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) {
17125 vm_caller_setup_arg_splat(cfp, calling);
17126 if (!(vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit))) &&
17127 calling->argc > 0 &&
17128 RB_TYPE_P((final_hash = *(cfp->sp - 1)), RUBY_T_HASH) &&
17129 (((struct RHash *)final_hash)->basic.flags & RHASH_PASS_AS_KEYWORDS)) {
17130 *(cfp->sp - 1) = rb_hash_dup(final_hash);
17131 calling->kw_splat = 1;
17134 if ((__builtin_expect(!!((vm_ci_flag(ci) & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit)))), 0))) {
17135 if ((vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit))) {
17136 vm_caller_setup_arg_kw(cfp, calling, ci);
17139 VALUE keyword_hash = cfp->sp[-1];
17140 if (!RB_TYPE_P(keyword_hash, RUBY_T_HASH)) {
17141 cfp->sp[-1] = rb_hash_dup(rb_to_hash_type(keyword_hash));
17143 else if (!(vm_ci_flag(ci) & (0x01 << VM_CALL_KW_SPLAT_MUT_bit))) {
17144 cfp->sp[-1] = rb_hash_dup(keyword_hash);
17150CALLER_REMOVE_EMPTY_KW_SPLAT(struct rb_control_frame_struct *__restrict__ cfp,
17151 struct rb_calling_info *__restrict__ calling,
17152 const struct rb_callinfo *__restrict__ ci)
17154 if ((__builtin_expect(!!(calling->kw_splat), 0))) {
17155 if (RHASH_EMPTY_P(cfp->sp[-1])) {
17158 calling->kw_splat = 0;
17163vm_call_iseq_setup_normal_opt_start(rb_execution_context_t *ec, rb_control_frame_t *cfp,
17164 struct rb_calling_info *calling)
17166 const struct rb_callcache *cc = calling->cc;
17167 const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
17168 const int lead_num = iseq->body->param.lead_num;
17169 const int opt = calling->argc - lead_num;
17170 const int opt_num = iseq->body->param.opt_num;
17171 const int opt_pc = (int)iseq->body->param.opt_table[opt];
17172 const int param = iseq->body->param.size;
17173 const int local = iseq->body->local_table_size;
17174 const int delta = opt_num - opt;
17176 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), opt_pc, param - delta, local);
17179vm_call_iseq_setup_tailcall_opt_start(rb_execution_context_t *ec, rb_control_frame_t *cfp,
17180 struct rb_calling_info *calling)
17182 const struct rb_callcache *cc = calling->cc;
17183 const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
17184 const int lead_num = iseq->body->param.lead_num;
17185 const int opt = calling->argc - lead_num;
17186 const int opt_pc = (int)iseq->body->param.opt_table[opt];
17188 return vm_call_iseq_setup_tailcall(ec, cfp, calling, opt_pc);
17191args_setup_kw_parameters(rb_execution_context_t *const ec, const rb_iseq_t *const iseq,
17192 VALUE *const passed_values, const int passed_keyword_len, const VALUE *const passed_keywords,
17193 VALUE *const locals);
17195vm_call_iseq_setup_kwparm_kwarg(rb_execution_context_t *ec, rb_control_frame_t *cfp,
17196 struct rb_calling_info *calling)
17198 const struct rb_callinfo *ci = calling->ci;
17199 const struct rb_callcache *cc = calling->cc;
17202 const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
17203 const struct rb_iseq_param_keyword *kw_param = iseq->body->param.keyword;
17204 const struct rb_callinfo_kwarg *kw_arg = vm_ci_kwarg(ci);
17205 const int ci_kw_len = kw_arg->keyword_len;
17206 const VALUE * const ci_keywords = kw_arg->keywords;
17207 VALUE *argv = cfp->sp - calling->argc;
17208 VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
17209 const int lead_num = iseq->body->param.lead_num;
17210 VALUE * const ci_kws = ((VALUE *)__builtin_alloca (rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len))));
17211 ruby_nonempty_memcpy((ci_kws), (argv + lead_num), rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len)));
17212 args_setup_kw_parameters(ec, iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
17213 int param = iseq->body->param.size;
17214 int local = iseq->body->local_table_size;
17215 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), 0, param, local);
17218vm_call_iseq_setup_kwparm_nokwarg(rb_execution_context_t *ec, rb_control_frame_t *cfp,
17219 struct rb_calling_info *calling)
17221 const struct rb_callinfo *__attribute__ ((__unused__)) ci = calling->ci;
17222 const struct rb_callcache *cc = calling->cc;
17225 const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
17226 const struct rb_iseq_param_keyword *kw_param = iseq->body->param.keyword;
17227 VALUE * const argv = cfp->sp - calling->argc;
17228 VALUE * const klocals = argv + kw_param->bits_start - kw_param->num;
17230 for (i=0; i<kw_param->num; i++) {
17231 klocals[i] = kw_param->default_values[i];
17233 klocals[i] = __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0));
17234 int param = iseq->body->param.size;
17235 int local = iseq->body->local_table_size;
17236 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), 0, param, local);
17239vm_callee_setup_arg(rb_execution_context_t *ec, struct rb_calling_info *calling,
17240 const rb_iseq_t *iseq, VALUE *argv, int param_size, int local_size)
17242 const struct rb_callinfo *ci = calling->ci;
17243 const struct rb_callcache *cc = calling->cc;
17244 _Bool cacheable_ci = vm_ci_markable(ci);
17245 if ((__builtin_expect(!!(!(vm_ci_flag(ci) & (0x01 << VM_CALL_KW_SPLAT_bit))), 1))) {
17246 if ((__builtin_expect(!!(rb_simple_iseq_p(iseq)), 1))) {
17247 rb_control_frame_t *cfp = ec->cfp;
17248 CALLER_SETUP_ARG(cfp, calling, ci);
17249 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
17250 if (calling->argc != iseq->body->param.lead_num) {
17251 argument_arity_error(ec, iseq, calling->argc, iseq->body->param.lead_num, iseq->body->param.lead_num);
17255 CC_SET_FASTPATH(cc, vm_call_iseq_setup_func(ci, param_size, local_size), cacheable_ci && vm_call_iseq_optimizable_p(ci, cc));
17258 else if (rb_iseq_only_optparam_p(iseq)) {
17259 rb_control_frame_t *cfp = ec->cfp;
17260 CALLER_SETUP_ARG(cfp, calling, ci);
17261 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
17262 const int lead_num = iseq->body->param.lead_num;
17263 const int opt_num = iseq->body->param.opt_num;
17264 const int argc = calling->argc;
17265 const int opt = argc - lead_num;
17266 if (opt < 0 || opt > opt_num) {
17267 argument_arity_error(ec, iseq, argc, lead_num, lead_num + opt_num);
17269 if ((__builtin_expect(!!(!(vm_ci_flag(ci) & (0x01 << VM_CALL_TAILCALL_bit))), 1))) {
17270 CC_SET_FASTPATH(cc, vm_call_iseq_setup_normal_opt_start,
17271 !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) &&
17272 cacheable_ci && !((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
17275 CC_SET_FASTPATH(cc, vm_call_iseq_setup_tailcall_opt_start,
17276 !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) &&
17277 cacheable_ci && !((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
17280 for (int i=argc; i<lead_num + opt_num; i++) {
17281 argv[i] = ((VALUE)RUBY_Qnil);
17283 return (int)iseq->body->param.opt_table[opt];
17285 else if (rb_iseq_only_kwparam_p(iseq) && !(vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SPLAT_bit))) {
17286 const int lead_num = iseq->body->param.lead_num;
17287 const int argc = calling->argc;
17288 const struct rb_iseq_param_keyword *kw_param = iseq->body->param.keyword;
17289 if (vm_ci_flag(ci) & (0x01 << VM_CALL_KWARG_bit)) {
17290 const struct rb_callinfo_kwarg *kw_arg = vm_ci_kwarg(ci);
17291 if (argc - kw_arg->keyword_len == lead_num) {
17292 const int ci_kw_len = kw_arg->keyword_len;
17293 const VALUE * const ci_keywords = kw_arg->keywords;
17294 VALUE * const ci_kws = ((VALUE *)__builtin_alloca (rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len))));
17295 ruby_nonempty_memcpy((ci_kws), (argv + lead_num), rbimpl_size_mul_or_raise(sizeof(VALUE), (ci_kw_len)));
17296 VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
17297 args_setup_kw_parameters(ec, iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
17298 CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_kwarg,
17299 cacheable_ci && !((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
17303 else if (argc == lead_num) {
17304 VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
17305 args_setup_kw_parameters(ec, iseq, ((void *)0), 0, ((void *)0), klocals);
17306 if (klocals[kw_param->num] == __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0))) {
17307 CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_nokwarg,
17308 cacheable_ci && !((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
17314 return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_method);
17316COLDFUNC static VALUE
17317vm_call_iseq_setup(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) {
17319 const struct rb_callcache *cc = calling->cc;
17320 const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def);
17321 const int param_size = iseq->body->param.size;
17322 const int local_size = iseq->body->local_table_size;
17323 const int opt_pc = vm_callee_setup_arg(ec, calling, def_iseq_ptr(vm_cc_cme(cc)->def), cfp->sp - calling->argc, param_size, local_size);
17324 return vm_call_iseq_setup_2(ec, cfp, calling, opt_pc, param_size, local_size);
17326COLDFUNC static VALUE
17327vm_call_iseq_setup_2(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
17328 int opt_pc, int param_size, int local_size) {
17329 const struct rb_callinfo *ci = calling->ci;
17330 const struct rb_callcache *cc = calling->cc;
17331 if ((__builtin_expect(!!(!(vm_ci_flag(ci) & (0x01 << VM_CALL_TAILCALL_bit))), 1))) {
17332 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(cc), opt_pc, param_size, local_size);
17335 return vm_call_iseq_setup_tailcall(ec, cfp, calling, opt_pc);
17339vm_call_iseq_setup_normal(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const rb_callable_method_entry_t *me,
17340 int opt_pc, int param_size, int local_size)
17342 const rb_iseq_t *iseq = def_iseq_ptr(me->def);
17343 VALUE *argv = cfp->sp - calling->argc;
17344 VALUE *sp = argv + param_size;
17345 cfp->sp = argv - 1 ;
17346 vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL, calling->recv,
17347 calling->block_handler, (VALUE)me,
17348 iseq->body->iseq_encoded + opt_pc, sp,
17349 local_size - param_size,
17350 iseq->body->stack_max);
17351 return ((VALUE)RUBY_Qundef);
17353COLDFUNC static VALUE
17354vm_call_iseq_setup_tailcall(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, int opt_pc) {
17355 const struct rb_callcache *cc = calling->cc;
17357 VALUE *argv = cfp->sp - calling->argc;
17358 const rb_callable_method_entry_t *me = vm_cc_cme(cc);
17359 const rb_iseq_t *iseq = def_iseq_ptr(me->def);
17360 VALUE *src_argv = argv;
17361 VALUE *sp_orig, *sp;
17362 VALUE finish_flag = VM_FRAME_FINISHED_P(cfp) ? VM_FRAME_FLAG_FINISH : 0;
17363 if (VM_BH_FROM_CFP_P(calling->block_handler, cfp)) {
17364 struct rb_captured_block *dst_captured = VM_CFP_TO_CAPTURED_BLOCK(((cfp)+1));
17365 const struct rb_captured_block *src_captured = VM_BH_TO_CAPT_BLOCK(calling->block_handler);
17366 dst_captured->code.val = src_captured->code.val;
17367 if (VM_BH_ISEQ_BLOCK_P(calling->block_handler)) {
17368 calling->block_handler = VM_BH_FROM_ISEQ_BLOCK(dst_captured);
17371 calling->block_handler = VM_BH_FROM_IFUNC_BLOCK(dst_captured);
17374 vm_pop_frame(ec, cfp, cfp->ep);
17376 sp_orig = sp = cfp->sp;
17377 sp[0] = calling->recv;
17379 for (i=0; i < iseq->body->param.size; i++) {
17380 *sp++ = src_argv[i];
17382 vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL | finish_flag,
17383 calling->recv, calling->block_handler, (VALUE)me,
17384 iseq->body->iseq_encoded + opt_pc, sp,
17385 iseq->body->local_table_size - iseq->body->param.size,
17386 iseq->body->stack_max);
17388 return ((VALUE)RUBY_Qundef);
17391ractor_unsafe_check(void)
17393 if (!rb_ractor_main_p()) {
17394 rb_raise(rb_eRactorUnsafeError, "ractor unsafe method called from not main ractor");
17398call_cfunc_m2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17400 ractor_unsafe_check();
17401 return (*func)(recv, rb_ary_new_from_values(argc, argv));
17404call_cfunc_m1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17406 ractor_unsafe_check();
17407 return (*func)(argc, argv, recv);
17410call_cfunc_0(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17412 ractor_unsafe_check();
17413 VALUE(*f)(VALUE) = (VALUE(*)(VALUE))func;
17417call_cfunc_1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17419 ractor_unsafe_check();
17420 VALUE(*f)(VALUE, VALUE) = (VALUE(*)(VALUE, VALUE))func;
17421 return (*f)(recv, argv[0]);
17424call_cfunc_2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17426 ractor_unsafe_check();
17427 VALUE(*f)(VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE))func;
17428 return (*f)(recv, argv[0], argv[1]);
17431call_cfunc_3(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17433 ractor_unsafe_check();
17434 VALUE(*f)(VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE))func;
17435 return (*f)(recv, argv[0], argv[1], argv[2]);
17438call_cfunc_4(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17440 ractor_unsafe_check();
17441 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE))func;
17442 return (*f)(recv, argv[0], argv[1], argv[2], argv[3]);
17445call_cfunc_5(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17447 ractor_unsafe_check();
17448 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17449 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4]);
17452call_cfunc_6(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17454 ractor_unsafe_check();
17455 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17456 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
17459call_cfunc_7(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17461 ractor_unsafe_check();
17462 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17463 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
17466call_cfunc_8(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17468 ractor_unsafe_check();
17469 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17470 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
17473call_cfunc_9(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17475 ractor_unsafe_check();
17476 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17477 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]);
17480call_cfunc_10(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17482 ractor_unsafe_check();
17483 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17484 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
17487call_cfunc_11(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17489 ractor_unsafe_check();
17490 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17491 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]);
17494call_cfunc_12(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17496 ractor_unsafe_check();
17497 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17498 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11]);
17501call_cfunc_13(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17503 ractor_unsafe_check();
17504 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17505 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12]);
17508call_cfunc_14(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17510 ractor_unsafe_check();
17511 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17512 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13]);
17515call_cfunc_15(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17517 ractor_unsafe_check();
17518 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17519 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13], argv[14]);
17522ractor_safe_call_cfunc_m2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17524 return (*func)(recv, rb_ary_new_from_values(argc, argv));
17527ractor_safe_call_cfunc_m1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17529 return (*func)(argc, argv, recv);
17532ractor_safe_call_cfunc_0(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17534 VALUE(*f)(VALUE) = (VALUE(*)(VALUE))func;
17538ractor_safe_call_cfunc_1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17540 VALUE(*f)(VALUE, VALUE) = (VALUE(*)(VALUE, VALUE))func;
17541 return (*f)(recv, argv[0]);
17544ractor_safe_call_cfunc_2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17546 VALUE(*f)(VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE))func;
17547 return (*f)(recv, argv[0], argv[1]);
17550ractor_safe_call_cfunc_3(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17552 VALUE(*f)(VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE))func;
17553 return (*f)(recv, argv[0], argv[1], argv[2]);
17556ractor_safe_call_cfunc_4(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17558 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE))func;
17559 return (*f)(recv, argv[0], argv[1], argv[2], argv[3]);
17562ractor_safe_call_cfunc_5(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17564 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17565 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4]);
17568ractor_safe_call_cfunc_6(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17570 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17571 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
17574ractor_safe_call_cfunc_7(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17576 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17577 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
17580ractor_safe_call_cfunc_8(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17582 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17583 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
17586ractor_safe_call_cfunc_9(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17588 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17589 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]);
17592ractor_safe_call_cfunc_10(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17594 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17595 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
17598ractor_safe_call_cfunc_11(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17600 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17601 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]);
17604ractor_safe_call_cfunc_12(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17606 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17607 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11]);
17610ractor_safe_call_cfunc_13(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17612 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17613 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12]);
17616ractor_safe_call_cfunc_14(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17618 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17619 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13]);
17622ractor_safe_call_cfunc_15(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
17624 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
17625 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13], argv[14]);
17628vm_cfp_consistent_p(rb_execution_context_t *ec, const rb_control_frame_t *reg_cfp)
17630 const int ov_flags = RAISED_STACKOVERFLOW;
17631 if ((__builtin_expect(!!(reg_cfp == ec->cfp + 1), 1))) return 1;
17632 if ((((ec)->raised_flag & (ov_flags)) != 0)) {
17633 ((ec)->raised_flag &= ~(ov_flags));
17639const rb_method_cfunc_t *
17640vm_method_cfunc_entry(const rb_callable_method_entry_t *me)
17642 return __extension__({
17644 ; __typeof__(&(me->def)->body.cfunc) unaligned_member_access_result = (&(me->def)->body.cfunc);
17645 ; unaligned_member_access_result; });
17648vm_call_cfunc_with_frame(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
17651 const struct rb_callinfo *ci = calling->ci;
17652 const struct rb_callcache *cc = calling->cc;
17654 const rb_callable_method_entry_t *me = vm_cc_cme(cc);
17655 const rb_method_cfunc_t *cfunc = vm_method_cfunc_entry(me);
17656 int len = cfunc->argc;
17657 VALUE recv = calling->recv;
17658 VALUE block_handler = calling->block_handler;
17659 VALUE frame_type = VM_FRAME_MAGIC_CFUNC | VM_FRAME_FLAG_CFRAME | VM_ENV_FLAG_LOCAL;
17660 int argc = calling->argc;
17661 int orig_argc = argc;
17662 if ((__builtin_expect(!!(calling->kw_splat), 0))) {
17663 frame_type |= VM_FRAME_FLAG_CFRAME_KW;
17665 do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0);
17666 do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, recv, me->def->original_id, vm_ci_mid(ci), me->owner, ((VALUE)RUBY_Qundef), 0); } } while (0);
17667 vm_push_frame(ec, ((void *)0), frame_type, recv,
17668 block_handler, (VALUE)me,
17669 0, ec->cfp->sp, 0, 0);
17670 if (len >= 0) rb_check_arity(argc, len, len);
17671 reg_cfp->sp -= orig_argc + 1;
17672 val = (*cfunc->invoker)(recv, argc, reg_cfp->sp + 1, cfunc->func);
17673 ((__builtin_expect(!!(vm_cfp_consistent_p(ec, reg_cfp)), 1)) ? (void)0 : rb_bug("vm_call_cfunc" ": cfp consistency error (%p, %p)", (void *)reg_cfp, (void *)(ec->cfp+1)));
17674 rb_vm_pop_frame(ec);
17675 do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, recv, me->def->original_id, vm_ci_mid(ci), me->owner, val, 0); } } while (0);
17676 do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0);
17680vm_call_cfunc(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
17682 const struct rb_callinfo *ci = calling->ci;
17684 CALLER_SETUP_ARG(reg_cfp, calling, ci);
17685 CALLER_REMOVE_EMPTY_KW_SPLAT(reg_cfp, calling, ci);
17686 CC_SET_FASTPATH(calling->cc, vm_call_cfunc_with_frame, !rb_splat_or_kwargs_p(ci) && !calling->kw_splat);
17687 return vm_call_cfunc_with_frame(ec, reg_cfp, calling);
17690vm_call_ivar(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
17692 const struct rb_callcache *cc = calling->cc;
17695 return vm_getivar(calling->recv, vm_cc_cme(cc)->def->body.attr.id, ((void *)0), ((void *)0), cc, 1);
17698vm_call_attrset(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
17700 const struct rb_callcache *cc = calling->cc;
17702 VALUE val = *(cfp->sp - 1);
17704 return vm_setivar(calling->recv, vm_cc_cme(cc)->def->body.attr.id, val, ((void *)0), ((void *)0), cc, 1);
17707rb_vm_call_ivar_attrset_p(const vm_call_handler ch)
17709 return (ch == vm_call_ivar || ch == vm_call_attrset);
17712vm_call_bmethod_body(rb_execution_context_t *ec, struct rb_calling_info *calling, const VALUE *argv)
17716 const struct rb_callcache *cc = calling->cc;
17717 const rb_callable_method_entry_t *cme = vm_cc_cme(cc);
17718 VALUE procv = cme->def->body.bmethod.proc;
17719 if (!RB_FL_TEST_RAW((procv), RUBY_FL_SHAREABLE) &&
17720 cme->def->body.bmethod.defined_ractor != rb_ractor_self(rb_ec_ractor_ptr(ec))) {
17721 rb_raise(rb_eRuntimeError, "defined with an un-shareable Proc in a different Ractor");
17723 (((proc)) = (rb_proc_t*)((struct RData *)(((procv))))->data);
17724 val = rb_vm_invoke_bmethod(ec, proc, calling->recv, calling->argc, argv, calling->kw_splat, calling->block_handler, vm_cc_cme(cc));
17728vm_call_bmethod(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
17733 const struct rb_callinfo *ci = calling->ci;
17734 CALLER_SETUP_ARG(cfp, calling, ci);
17735 argc = calling->argc;
17736 argv = ((VALUE *)__builtin_alloca (rbimpl_size_mul_or_raise(sizeof(VALUE), (argc))));
17737 ruby_nonempty_memcpy((argv), (cfp->sp - argc), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc)));
17738 cfp->sp += - argc - 1;
17739 return vm_call_bmethod_body(ec, calling, argv);
17741__attribute__ ((__visibility__("default"))) VALUE
17742rb_find_defined_class_by_owner(VALUE current_class, VALUE target_owner)
17744 VALUE klass = current_class;
17745 if (RB_TYPE_P(klass, RUBY_T_ICLASS) && RB_FL_TEST(klass, ((VALUE)RUBY_FL_USER5)) &&
17746 RB_TYPE_P(RBASIC_CLASS(klass), RUBY_T_CLASS)) {
17747 klass = RBASIC_CLASS(klass);
17749 while (RB_TEST(klass)) {
17750 VALUE owner = RB_TYPE_P(klass, RUBY_T_ICLASS) ? RBASIC_CLASS(klass) : klass;
17751 if (owner == target_owner) {
17754 klass = RCLASS_SUPER(klass);
17756 return current_class;
17758static const rb_callable_method_entry_t *
17759aliased_callable_method_entry(const rb_callable_method_entry_t *me)
17761 const rb_method_entry_t *orig_me = me->def->body.alias.original_me;
17762 const rb_callable_method_entry_t *cme;
17763 if (orig_me->defined_class == 0) {
17764 VALUE defined_class = rb_find_defined_class_by_owner(me->defined_class, orig_me->owner);
17766 cme = rb_method_entry_complement_defined_class(orig_me, me->called_id, defined_class);
17767 if (me->def->alias_count + me->def->complemented_count == 0) {
17768 rb_obj_write((VALUE)(me), __extension__({
17770 ; __typeof__((VALUE *)(&me->def->body.alias.original_me)) unaligned_member_access_result = ((VALUE *)(&me->def->body.alias.original_me));
17771 ; unaligned_member_access_result; }), (VALUE)(cme), "./vm_insnhelper.c", 3159);
17774 rb_method_definition_t *def =
17775 rb_method_definition_create(VM_METHOD_TYPE_ALIAS, me->def->original_id);
17776 rb_method_definition_set((rb_method_entry_t *)me, def, (void *)cme);
17780 cme = (const rb_callable_method_entry_t *)orig_me;
17785const rb_callable_method_entry_t *
17786rb_aliased_callable_method_entry(const rb_callable_method_entry_t *me)
17788 return aliased_callable_method_entry(me);
17791vm_call_alias(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
17793 calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5), .klass = ((VALUE)RUBY_Qundef), .cme_ = aliased_callable_method_entry(vm_cc_cme(calling->cc)), .call_ = vm_call_general, .aux_ = { 0 }, };
17794 return vm_call_method_each_type(ec, cfp, calling);
17796static enum method_missing_reason
17797ci_missing_reason(const struct rb_callinfo *ci)
17799 enum method_missing_reason stat = MISSING_NOENTRY;
17800 if (vm_ci_flag(ci) & (0x01 << VM_CALL_VCALL_bit)) stat |= MISSING_VCALL;
17801 if (vm_ci_flag(ci) & (0x01 << VM_CALL_FCALL_bit)) stat |= MISSING_FCALL;
17802 if (vm_ci_flag(ci) & (0x01 << VM_CALL_SUPER_bit)) stat |= MISSING_SUPER;
17806vm_call_symbol(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
17807 struct rb_calling_info *calling, const struct rb_callinfo *ci, VALUE symbol)
17809 ((__builtin_expect(!!(!!(calling->argc >= 0)), 1)) ? ((void)0) : __builtin_unreachable());
17810 enum method_missing_reason missing_reason = MISSING_NOENTRY;
17811 int argc = calling->argc;
17812 VALUE recv = calling->recv;
17813 VALUE klass = rb_class_of(recv);
17814 ID mid = rb_check_id(&symbol);
17815 int flags = (0x01 << VM_CALL_FCALL_bit) |
17816 (0x01 << VM_CALL_OPT_SEND_bit) |
17817 (calling->kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0);
17818 if ((__builtin_expect(!!(! mid), 0))) {
17819 mid = idMethodMissing;
17820 missing_reason = ci_missing_reason(ci);
17821 ec->method_missing_reason = missing_reason;
17823 do { __extension__ _Static_assert(sizeof(*((reg_cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((reg_cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((reg_cfp)->sp)[((1))]; if ((__builtin_expect(!!(((reg_cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
17824 (((reg_cfp)->sp) += (((1))));
17825 memmove((&(*(((((reg_cfp)->sp)))-(i - 1)-1))), (&(*(((((reg_cfp)->sp)))-(i)-1))), rbimpl_size_mul_or_raise(sizeof(VALUE), (i)));
17826 argc = ++calling->argc;
17827 if (rb_method_basic_definition_p(klass, idMethodMissing)) {
17828 (*(((((reg_cfp)->sp)))-(i)-1)) = symbol;
17829 int priv = vm_ci_flag(ci) & ((0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_VCALL_bit));
17830 const VALUE *argv = (((((reg_cfp)->sp)))-(argc));
17831 VALUE exc = rb_make_no_method_exception(
17832 rb_eNoMethodError, 0, recv, argc, argv, priv);
17836 (*(((((reg_cfp)->sp)))-(i)-1)) = rb_str_intern(symbol);
17839 calling->ci = &(struct rb_callinfo) { .flags = RUBY_T_IMEMO | (imemo_callinfo << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4), .mid = mid, .flag = flags, .argc = argc, .kwarg = vm_ci_kwarg(ci), };
17840 calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5), .klass = klass, .cme_ = rb_callable_method_entry_with_refinements(klass, mid, ((void *)0)), .call_ = vm_call_general, .aux_ = { .method_missing_reason = missing_reason }, };
17841 return vm_call_method(ec, reg_cfp, calling);
17844vm_call_opt_send(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
17849 CALLER_SETUP_ARG(reg_cfp, calling, calling->ci);
17850 i = calling->argc - 1;
17851 if (calling->argc == 0) {
17852 rb_raise(rb_eArgError, "no method name given");
17855 sym = (*(((((reg_cfp)->sp)))-(i)-1));
17857 memmove((&(*(((((reg_cfp)->sp)))-(i)-1))), (&(*(((((reg_cfp)->sp)))-(i-1)-1))), rbimpl_size_mul_or_raise(sizeof(VALUE), (i)));
17859 calling->argc -= 1;
17860 (((reg_cfp)->sp) -= (((1))));
17861 return vm_call_symbol(ec, reg_cfp, calling, calling->ci, sym);
17865vm_call_method_missing_body(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling,
17866 const struct rb_callinfo *orig_ci, enum method_missing_reason reason)
17869 VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc));
17871 CALLER_SETUP_ARG(reg_cfp, calling, orig_ci);
17872 argc = calling->argc + 1;
17873 unsigned int flag = (0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_OPT_SEND_bit) | (calling->kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0);
17874 calling->argc = argc;
17875 do { __extension__ _Static_assert(sizeof(*((reg_cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((reg_cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((reg_cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((reg_cfp)->sp)[((1))]; if ((__builtin_expect(!!(((reg_cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
17878 memmove((argv+1), (argv), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc-1)));
17880 argv[0] = rb_id2sym(vm_ci_mid(orig_ci));
17881 (((reg_cfp)->sp) += (((1))));
17882 ec->method_missing_reason = reason;
17883 calling->ci = &(struct rb_callinfo) { .flags = RUBY_T_IMEMO | (imemo_callinfo << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4), .mid = idMethodMissing, .flag = flag, .argc = argc, .kwarg = vm_ci_kwarg(orig_ci), };
17884 calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5), .klass = ((VALUE)RUBY_Qundef), .cme_ = rb_callable_method_entry_without_refinements(rb_class_of(calling->recv), idMethodMissing, ((void *)0)), .call_ = vm_call_general, .aux_ = { 0 }, };
17885 return vm_call_method(ec, reg_cfp, calling);
17888vm_call_method_missing(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
17890 return vm_call_method_missing_body(ec, reg_cfp, calling, calling->ci, vm_cc_cmethod_missing_reason(calling->cc));
17892static const rb_callable_method_entry_t *refined_method_callable_without_refinement(const rb_callable_method_entry_t *me);
17894vm_call_zsuper(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, VALUE klass)
17896 klass = RCLASS_SUPER(klass);
17897 const rb_callable_method_entry_t *cme = klass ? rb_callable_method_entry(klass, vm_ci_mid(calling->ci)) : ((void *)0);
17898 if (cme == ((void *)0)) {
17899 return vm_call_method_nome(ec, cfp, calling);
17901 if (cme->def->type == VM_METHOD_TYPE_REFINED &&
17902 cme->def->body.refined.orig_me) {
17903 cme = refined_method_callable_without_refinement(cme);
17905 calling->cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5), .klass = ((VALUE)RUBY_Qundef), .cme_ = cme, .call_ = vm_call_general, .aux_ = { 0 }, };
17906 return vm_call_method_each_type(ec, cfp, calling);
17909find_refinement(VALUE refinements, VALUE klass)
17911 if (RB_NIL_P(refinements)) {
17912 return ((VALUE)RUBY_Qnil);
17914 return rb_hash_lookup(refinements, klass);
17916__attribute__((__pure__)) static rb_control_frame_t * current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp);
17917static rb_control_frame_t *
17918current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp)
17920 rb_control_frame_t *top_cfp = cfp;
17921 if (cfp->iseq && cfp->iseq->body->type == ISEQ_TYPE_BLOCK) {
17922 const rb_iseq_t *local_iseq = cfp->iseq->body->local_iseq;
17925 if (RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) {
17928 } while (cfp->iseq != local_iseq);
17932static const rb_callable_method_entry_t *
17933refined_method_callable_without_refinement(const rb_callable_method_entry_t *me)
17935 const rb_method_entry_t *orig_me = me->def->body.refined.orig_me;
17936 const rb_callable_method_entry_t *cme;
17937 if (orig_me->defined_class == 0) {
17942 cme = (const rb_callable_method_entry_t *)orig_me;
17945 if ((!(cme) || !(cme)->def || (cme)->def->type == VM_METHOD_TYPE_UNDEF)) {
17950static const rb_callable_method_entry_t *
17951search_refined_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
17953 ID mid = vm_ci_mid(calling->ci);
17954 const rb_cref_t *cref = vm_get_cref(cfp->ep);
17955 const struct rb_callcache * const cc = calling->cc;
17956 const rb_callable_method_entry_t *cme = vm_cc_cme(cc);
17957 for (; cref; cref = CREF_NEXT(cref)) {
17958 const VALUE refinement = find_refinement(CREF_REFINEMENTS(cref), vm_cc_cme(cc)->owner);
17959 if (RB_NIL_P(refinement)) continue;
17960 const rb_callable_method_entry_t *const ref_me =
17961 rb_callable_method_entry(refinement, mid);
17963 if (vm_cc_call(cc) == vm_call_super_method) {
17964 const rb_control_frame_t *top_cfp = current_method_entry(ec, cfp);
17965 const rb_callable_method_entry_t *top_me = rb_vm_frame_method_entry(top_cfp);
17966 if (top_me && rb_method_definition_eq(ref_me->def, top_me->def)) {
17970 if (cme->def->type != VM_METHOD_TYPE_REFINED ||
17971 cme->def != ref_me->def) {
17974 if (ref_me->def->type != VM_METHOD_TYPE_REFINED) {
17979 return ((void *)0);
17982 if (vm_cc_cme(cc)->def->body.refined.orig_me) {
17983 return refined_method_callable_without_refinement(vm_cc_cme(cc));
17986 VALUE klass = RCLASS_SUPER(vm_cc_cme(cc)->defined_class);
17987 const rb_callable_method_entry_t *cme = klass ? rb_callable_method_entry(klass, mid) : ((void *)0);
17992vm_call_refined(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
17994 struct rb_callcache *ref_cc = &(struct rb_callcache) { .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5), .klass = ((VALUE)RUBY_Qundef), .cme_ = search_refined_method(ec, cfp, calling), .call_ = vm_call_general, .aux_ = { 0 }, };
17995 if (vm_cc_cme(ref_cc)) {
17996 calling->cc= ref_cc;
17997 return vm_call_method(ec, cfp, calling);
18000 return vm_call_method_nome(ec, cfp, calling);
18003static inline VALUE vm_invoke_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci, _Bool is_lambda, VALUE block_handler);
18004__attribute__((__noinline__)) static VALUE vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci, VALUE block_handler);
18006vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
18007 struct rb_calling_info *calling, const struct rb_callinfo *ci, VALUE block_handler)
18009 int argc = calling->argc;
18010 if (argc > 0) memmove((&(*(((((reg_cfp)->sp)))-(argc)-1))), (&(*(((((reg_cfp)->sp)))-(argc-1)-1))), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc)));
18011 (((reg_cfp)->sp) -= (((1))));
18012 return vm_invoke_block(ec, reg_cfp, calling, ci, 0, block_handler);
18015vm_call_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
18018 const struct rb_callinfo *ci = calling->ci;
18019 VALUE procval = calling->recv;
18020 return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, VM_BH_FROM_PROC(procval));
18023vm_call_opt_block_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
18026 VALUE block_handler = VM_ENV_BLOCK_HANDLER(VM_CF_LEP(reg_cfp));
18027 const struct rb_callinfo *ci = calling->ci;
18028 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_CALL)]&((1 << 12))) == 0), 1)))) {
18029 return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, block_handler);
18032 calling->recv = rb_vm_bh_to_procval(ec, block_handler);
18033 calling->cc = rb_vm_search_method_slowpath(ci, rb_class_of(calling->recv));
18034 return vm_call_general(ec, reg_cfp, calling);
18038vm_call_opt_struct_aref0(rb_execution_context_t *ec, struct rb_calling_info *calling)
18040 VALUE recv = calling->recv;
18044 const unsigned int off = vm_cc_cme(calling->cc)->def->body.optimized.index;
18045 return internal_RSTRUCT_GET(recv, off);
18048vm_call_opt_struct_aref(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
18051 VALUE ret = vm_call_opt_struct_aref0(ec, calling);
18056vm_call_opt_struct_aset0(rb_execution_context_t *ec, struct rb_calling_info *calling, VALUE val)
18058 VALUE recv = calling->recv;
18062 rb_check_frozen_inline(recv);
18063 const unsigned int off = vm_cc_cme(calling->cc)->def->body.optimized.index;
18064 internal_RSTRUCT_SET(recv, off, val);
18068vm_call_opt_struct_aset(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
18071 VALUE ret = vm_call_opt_struct_aset0(ec, calling, *(reg_cfp->sp - 1));
18075__attribute__((__noinline__)) static VALUE vm_call_optimized(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_callinfo *ci, const struct rb_callcache *cc);
18077vm_call_optimized(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling,
18078 const struct rb_callinfo *ci, const struct rb_callcache *cc)
18080 switch (vm_cc_cme(cc)->def->body.optimized.type) {
18081 case OPTIMIZED_METHOD_TYPE_SEND:
18082 CC_SET_FASTPATH(cc, vm_call_opt_send, 1);
18083 return vm_call_opt_send(ec, cfp, calling);
18084 case OPTIMIZED_METHOD_TYPE_CALL:
18085 CC_SET_FASTPATH(cc, vm_call_opt_call, 1);
18086 return vm_call_opt_call(ec, cfp, calling);
18087 case OPTIMIZED_METHOD_TYPE_BLOCK_CALL:
18088 CC_SET_FASTPATH(cc, vm_call_opt_block_call, 1);
18089 return vm_call_opt_block_call(ec, cfp, calling);
18090 case OPTIMIZED_METHOD_TYPE_STRUCT_AREF:
18091 CALLER_SETUP_ARG(cfp, calling, ci);
18092 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
18093 rb_check_arity(calling->argc, 0, 0);
18094 CC_SET_FASTPATH(cc, vm_call_opt_struct_aref, (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SIMPLE_bit)));
18095 return vm_call_opt_struct_aref(ec, cfp, calling);
18096 case OPTIMIZED_METHOD_TYPE_STRUCT_ASET:
18097 CALLER_SETUP_ARG(cfp, calling, ci);
18098 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
18099 rb_check_arity(calling->argc, 1, 1);
18100 CC_SET_FASTPATH(cc, vm_call_opt_struct_aset, (vm_ci_flag(ci) & (0x01 << VM_CALL_ARGS_SIMPLE_bit)));
18101 return vm_call_opt_struct_aset(ec, cfp, calling);
18103 rb_bug("vm_call_method: unsupported optimized method type (%d)", vm_cc_cme(cc)->def->body.optimized.type);
18106COLDFUNC static VALUE
18107vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling) {
18108 const struct rb_callinfo *ci = calling->ci;
18109 const struct rb_callcache *cc = calling->cc;
18110 const rb_callable_method_entry_t *cme = vm_cc_cme(cc);
18112 switch (cme->def->type) {
18113 case VM_METHOD_TYPE_ISEQ:
18114 CC_SET_FASTPATH(cc, vm_call_iseq_setup, 1);
18115 return vm_call_iseq_setup(ec, cfp, calling);
18116 case VM_METHOD_TYPE_NOTIMPLEMENTED:
18117 case VM_METHOD_TYPE_CFUNC:
18118 CC_SET_FASTPATH(cc, vm_call_cfunc, 1);
18119 return vm_call_cfunc(ec, cfp, calling);
18120 case VM_METHOD_TYPE_ATTRSET:
18121 CALLER_SETUP_ARG(cfp, calling, ci);
18122 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
18123 rb_check_arity(calling->argc, 1, 1);
18124 vm_cc_attr_index_set(cc, 0);
18125 const unsigned int aset_mask = ((0x01 << VM_CALL_ARGS_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_bit) | (0x01 << VM_CALL_KWARG_bit));
18126 if ((__builtin_expect(!!(ruby_vm_event_flags & (0x0020 | 0x0040)), 0))) { do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, ((VALUE)RUBY_Qundef), 0); } } while (0); v = vm_call_attrset(ec, cfp, calling); do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, (v), 0); } } while (0); } else { CC_SET_FASTPATH(cc, vm_call_attrset, !(vm_ci_flag(ci) & aset_mask)); v = vm_call_attrset(ec, cfp, calling); };
18128 case VM_METHOD_TYPE_IVAR:
18129 CALLER_SETUP_ARG(cfp, calling, ci);
18130 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
18131 rb_check_arity(calling->argc, 0, 0);
18132 vm_cc_attr_index_set(cc, 0);
18133 const unsigned int ivar_mask = ((0x01 << VM_CALL_ARGS_SPLAT_bit) | (0x01 << VM_CALL_KW_SPLAT_bit));
18134 if ((__builtin_expect(!!(ruby_vm_event_flags & (0x0020 | 0x0040)), 0))) { do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, ((VALUE)RUBY_Qundef), 0); } } while (0); v = vm_call_ivar(ec, cfp, calling); do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, (v), 0); } } while (0); } else { CC_SET_FASTPATH(cc, vm_call_ivar, !(vm_ci_flag(ci) & ivar_mask)); v = vm_call_ivar(ec, cfp, calling); };
18136 case VM_METHOD_TYPE_MISSING:
18137 vm_cc_method_missing_reason_set(cc, 0);
18138 CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
18139 return vm_call_method_missing(ec, cfp, calling);
18140 case VM_METHOD_TYPE_BMETHOD:
18141 CC_SET_FASTPATH(cc, vm_call_bmethod, 1);
18142 return vm_call_bmethod(ec, cfp, calling);
18143 case VM_METHOD_TYPE_ALIAS:
18144 CC_SET_FASTPATH(cc, vm_call_alias, 1);
18145 return vm_call_alias(ec, cfp, calling);
18146 case VM_METHOD_TYPE_OPTIMIZED:
18147 return vm_call_optimized(ec, cfp, calling, ci, cc);
18148 case VM_METHOD_TYPE_UNDEF:
18150 case VM_METHOD_TYPE_ZSUPER:
18151 return vm_call_zsuper(ec, cfp, calling, ((((struct RClass *)(vm_cc_cme(cc)->defined_class))->ptr)->origin_));
18152 case VM_METHOD_TYPE_REFINED:
18153 return vm_call_refined(ec, cfp, calling);
18155 rb_bug("vm_call_method: unsupported method type (%d)", vm_cc_cme(cc)->def->type);
18157__attribute__((__noreturn__)) static void vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj, int call_status);
18159vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
18161 const struct rb_callinfo *ci = calling->ci;
18162 const int stat = ci_missing_reason(ci);
18163 if (vm_ci_mid(ci) == idMethodMissing) {
18164 rb_control_frame_t *reg_cfp = cfp;
18165 VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc));
18166 vm_raise_method_missing(ec, calling->argc, argv, calling->recv, stat);
18169 return vm_call_method_missing_body(ec, cfp, calling, ci, stat);
18173vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
18175 const struct rb_callinfo *ci = calling->ci;
18176 const struct rb_callcache *cc = calling->cc;
18178 if (vm_cc_cme(cc) != ((void *)0)) {
18179 switch ((rb_method_visibility_t)(((vm_cc_cme(cc))->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
18180 case METHOD_VISI_PUBLIC:
18181 return vm_call_method_each_type(ec, cfp, calling);
18182 case METHOD_VISI_PRIVATE:
18183 if (!(vm_ci_flag(ci) & (0x01 << VM_CALL_FCALL_bit))) {
18184 enum method_missing_reason stat = MISSING_PRIVATE;
18185 if (vm_ci_flag(ci) & (0x01 << VM_CALL_VCALL_bit)) stat |= MISSING_VCALL;
18186 vm_cc_method_missing_reason_set(cc, stat);
18187 CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
18188 return vm_call_method_missing(ec, cfp, calling);
18190 return vm_call_method_each_type(ec, cfp, calling);
18191 case METHOD_VISI_PROTECTED:
18192 if (!(vm_ci_flag(ci) & (0x01 << VM_CALL_OPT_SEND_bit))) {
18193 if (!rb_obj_is_kind_of(cfp->self, vm_cc_cme(cc)->defined_class)) {
18194 vm_cc_method_missing_reason_set(cc, MISSING_PROTECTED);
18195 return vm_call_method_missing(ec, cfp, calling);
18199 struct rb_callcache cc_on_stack = *cc;
18200 RB_FL_SET_RAW((VALUE)&cc_on_stack, ((VALUE)RUBY_FL_USER4));
18201 calling->cc = &cc_on_stack;
18202 return vm_call_method_each_type(ec, cfp, calling);
18205 return vm_call_method_each_type(ec, cfp, calling);
18207 rb_bug("unreachable");
18211 return vm_call_method_nome(ec, cfp, calling);
18215vm_call_general(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
18218 return vm_call_method(ec, reg_cfp, calling);
18221rb_vm_cc_general(const struct rb_callcache *cc)
18225 *(vm_call_handler *)&cc->call_ = vm_call_general;
18228vm_call_super_method(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling)
18231 if (ec == ((void *)0)) rb_bug("unreachable");
18233 return vm_call_method(ec, reg_cfp, calling);
18236vm_search_normal_superclass(VALUE klass)
18238 if (RB_BUILTIN_TYPE(klass) == RUBY_T_ICLASS &&
18239 RB_FL_TEST_RAW(((struct RBasic *)(klass))->klass, RMODULE_IS_REFINEMENT)) {
18240 klass = ((struct RBasic *)(klass))->klass;
18242 klass = ((((struct RClass *)(klass))->ptr)->origin_);
18243 return RCLASS_SUPER(klass);
18245__attribute__((__noreturn__)) static void vm_super_outside(void);
18247vm_super_outside(void)
18249 rb_raise(rb_eNoMethodError, "super called outside of method");
18251static const struct rb_callcache *
18252empty_cc_for_super(void)
18254 return rb_vm_empty_cc_for_super();
18256static const struct rb_callcache *
18257vm_search_super_method(const rb_control_frame_t *reg_cfp, struct rb_call_data *cd, VALUE recv)
18259 VALUE current_defined_class;
18260 const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(reg_cfp);
18262 vm_super_outside();
18264 current_defined_class = me->defined_class;
18265 if (!RB_NIL_P(((((struct RClass *)(current_defined_class))->ptr)->refined_class))) {
18266 current_defined_class = ((((struct RClass *)(current_defined_class))->ptr)->refined_class);
18268 if (RB_BUILTIN_TYPE(current_defined_class) != RUBY_T_MODULE &&
18269 !RB_FL_TEST_RAW(current_defined_class, RMODULE_INCLUDED_INTO_REFINEMENT) &&
18270 reg_cfp->iseq != method_entry_iseqptr(me) &&
18271 !rb_obj_is_kind_of(recv, current_defined_class)) {
18272 VALUE m = RB_TYPE_P(current_defined_class, RUBY_T_ICLASS) ?
18273 ((((struct RClass *)(current_defined_class))->ptr)->includer) : current_defined_class;
18275 rb_raise(rb_eTypeError,
18276 "self has wrong type to call super in this context: "
18277 "%""l""i" "\v"" (expected %""l""i" "\v"")",
18278 rb_obj_class(recv), m);
18281 if (me->def->type == VM_METHOD_TYPE_BMETHOD && (vm_ci_flag(cd->ci) & (0x01 << VM_CALL_ZSUPER_bit))) {
18282 rb_raise(rb_eRuntimeError,
18283 "implicit argument passing of super from method defined"
18284 " by define_method() is not supported."
18285 " Specify all arguments explicitly.");
18287 ID mid = me->def->original_id;
18288 cd->ci = vm_ci_new_runtime_(mid, vm_ci_flag(cd->ci), vm_ci_argc(cd->ci), vm_ci_kwarg(cd->ci), "./vm_insnhelper.c", 3867);
18289 (rb_obj_written((VALUE)(reg_cfp->iseq), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(cd->ci), "./vm_insnhelper.c", 3872));
18290 const struct rb_callcache *cc;
18291 VALUE klass = vm_search_normal_superclass(me->defined_class);
18293 cc = vm_cc_new(klass, ((void *)0), vm_call_method_missing);
18294 rb_obj_write((VALUE)(reg_cfp->iseq), __extension__({
18296 ; __typeof__((VALUE *)(&cd->cc)) unaligned_member_access_result = ((VALUE *)(&cd->cc));
18297 ; unaligned_member_access_result; }), (VALUE)(cc), "./vm_insnhelper.c", 3881);
18300 cc = vm_search_method_fastpath((VALUE)reg_cfp->iseq, cd, klass);
18301 const rb_callable_method_entry_t *cached_cme = vm_cc_cme(cc);
18302 if (cached_cme == ((void *)0)) {
18303 cd->cc = empty_cc_for_super();
18305 else if (cached_cme->called_id != mid) {
18306 const rb_callable_method_entry_t *cme = rb_callable_method_entry(klass, mid);
18308 cc = vm_cc_new(klass, cme, vm_call_super_method);
18309 rb_obj_write((VALUE)(reg_cfp->iseq), __extension__({
18311 ; __typeof__((VALUE *)(&cd->cc)) unaligned_member_access_result = ((VALUE *)(&cd->cc));
18312 ; unaligned_member_access_result; }), (VALUE)(cc), "./vm_insnhelper.c", 3896);
18315 cd->cc = cc = empty_cc_for_super();
18319 switch (cached_cme->def->type) {
18320 case VM_METHOD_TYPE_REFINED:
18321 case VM_METHOD_TYPE_ATTRSET:
18322 case VM_METHOD_TYPE_IVAR:
18323 vm_cc_call_set(cc, vm_call_super_method);
18334block_proc_is_lambda(const VALUE procval)
18338 (((proc)) = (rb_proc_t*)((struct RData *)(((procval))))->data);
18339 return proc->is_lambda;
18346vm_yield_with_cfunc(rb_execution_context_t *ec,
18347 const struct rb_captured_block *captured,
18348 VALUE self, int argc, const VALUE *argv, int kw_splat, VALUE block_handler,
18349 const rb_callable_method_entry_t *me)
18352 VALUE val, arg, blockarg;
18354 const struct vm_ifunc *ifunc = captured->code.ifunc;
18356 arg = rb_ary_new_from_values(argc, argv);
18358 else if (argc == 0) {
18359 arg = ((VALUE)RUBY_Qnil);
18364 blockarg = rb_vm_bh_to_procval(ec, block_handler);
18365 frame_flag = VM_FRAME_MAGIC_IFUNC | VM_FRAME_FLAG_CFRAME | (me ? VM_FRAME_FLAG_BMETHOD : 0);
18367 frame_flag |= VM_FRAME_FLAG_CFRAME_KW;
18369 vm_push_frame(ec, (const rb_iseq_t *)captured->code.ifunc,
18372 ((VALUE)((captured->ep)) | (0x01)),
18374 0, ec->cfp->sp, 0, 0);
18375 val = (*ifunc->func)(arg, (VALUE)ifunc->data, argc, argv, blockarg);
18376 rb_vm_pop_frame(ec);
18380vm_yield_with_symbol(rb_execution_context_t *ec, VALUE symbol, int argc, const VALUE *argv, int kw_splat, VALUE block_handler)
18382 return rb_sym_proc_call(rb_sym2id(symbol), argc, argv, kw_splat, rb_vm_bh_to_procval(ec, block_handler));
18385vm_callee_setup_block_arg_arg0_splat(rb_control_frame_t *cfp, const rb_iseq_t *iseq, VALUE *argv, VALUE ary)
18388 long len = rb_array_len(ary);
18389 do { __extension__ _Static_assert(sizeof(*((cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((cfp)->sp)[((iseq->body->param.lead_num))]; if ((__builtin_expect(!!(((cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
18390 for (i=0; i<len && i<iseq->body->param.lead_num; i++) {
18391 argv[i] = RARRAY_AREF(ary, i);
18396vm_callee_setup_block_arg_arg0_check(VALUE *argv)
18398 VALUE ary, arg0 = argv[0];
18399 ary = rb_check_array_type(arg0);
18404vm_callee_setup_block_arg(rb_execution_context_t *ec, struct rb_calling_info *calling, const struct rb_callinfo *ci, const rb_iseq_t *iseq, VALUE *argv, const enum arg_setup_type arg_setup_type)
18406 if (rb_simple_iseq_p(iseq)) {
18407 rb_control_frame_t *cfp = ec->cfp;
18409 CALLER_SETUP_ARG(cfp, calling, ci);
18410 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
18411 if (arg_setup_type == arg_setup_block &&
18412 calling->argc == 1 &&
18413 iseq->body->param.flags.has_lead &&
18414 !iseq->body->param.flags.ambiguous_param0 &&
18415 !RB_NIL_P(arg0 = vm_callee_setup_block_arg_arg0_check(argv))) {
18416 calling->argc = vm_callee_setup_block_arg_arg0_splat(cfp, iseq, argv, arg0);
18418 if (calling->argc != iseq->body->param.lead_num) {
18419 if (arg_setup_type == arg_setup_block) {
18420 if (calling->argc < iseq->body->param.lead_num) {
18422 do { __extension__ _Static_assert(sizeof(*((cfp)->sp)) == sizeof(VALUE), "sizeof_sp" ": " "sizeof(*((cfp)->sp)) == sizeof(VALUE)"); __extension__ _Static_assert(sizeof(*((cfp))) == sizeof(rb_control_frame_t), "sizeof_cfp" ": " "sizeof(*((cfp))) == sizeof(rb_control_frame_t)"); const struct rb_control_frame_struct *bound = (void *)&((cfp)->sp)[((iseq->body->param.lead_num))]; if ((__builtin_expect(!!(((cfp)) <= &bound[1]), 0))) { vm_stackoverflow(); } } while (0);
18423 for (i=calling->argc; i<iseq->body->param.lead_num; i++) argv[i] = ((VALUE)RUBY_Qnil);
18424 calling->argc = iseq->body->param.lead_num;
18426 else if (calling->argc > iseq->body->param.lead_num) {
18427 calling->argc = iseq->body->param.lead_num;
18431 argument_arity_error(ec, iseq, calling->argc, iseq->body->param.lead_num, iseq->body->param.lead_num);
18437 return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_type);
18441vm_yield_setup_args(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int argc, VALUE *argv, int kw_splat, VALUE block_handler, enum arg_setup_type arg_setup_type)
18443 struct rb_calling_info calling_entry, *calling;
18444 calling = &calling_entry;
18445 calling->argc = argc;
18446 calling->block_handler = block_handler;
18447 calling->kw_splat = kw_splat;
18448 calling->recv = ((VALUE)RUBY_Qundef);
18449 struct rb_callinfo dummy_ci = (struct rb_callinfo) { .flags = RUBY_T_IMEMO | (imemo_callinfo << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4), .mid = 0, .flag = (kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0), .argc = 0, .kwarg = 0, };
18450 return vm_callee_setup_block_arg(ec, calling, &dummy_ci, iseq, argv, arg_setup_type);
18453vm_invoke_iseq_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
18454 struct rb_calling_info *calling, const struct rb_callinfo *ci,
18455 _Bool is_lambda, VALUE block_handler)
18457 const struct rb_captured_block *captured = VM_BH_TO_ISEQ_BLOCK(block_handler);
18458 const rb_iseq_t *iseq = rb_iseq_check(captured->code.iseq);
18459 const int arg_size = iseq->body->param.size;
18460 VALUE * const rsp = ((((reg_cfp)->sp))) - calling->argc;
18461 int opt_pc = vm_callee_setup_block_arg(ec, calling, ci, iseq, rsp, is_lambda ? arg_setup_method : arg_setup_block);
18462 (((reg_cfp)->sp) = (((rsp))));
18463 vm_push_frame(ec, iseq,
18464 VM_FRAME_MAGIC_BLOCK | (is_lambda ? VM_FRAME_FLAG_LAMBDA : 0),
18466 ((VALUE)((captured->ep)) | (0x01)), 0,
18467 iseq->body->iseq_encoded + opt_pc,
18469 iseq->body->local_table_size - arg_size, iseq->body->stack_max);
18470 return ((VALUE)RUBY_Qundef);
18473vm_invoke_symbol_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
18474 struct rb_calling_info *calling, const struct rb_callinfo *ci,
18475 __attribute__ ((__unused__)) _Bool is_lambda, VALUE block_handler)
18477 if (calling->argc < 1) {
18478 rb_raise(rb_eArgError, "no receiver given");
18481 VALUE symbol = VM_BH_TO_SYMBOL(block_handler);
18482 CALLER_SETUP_ARG(reg_cfp, calling, ci);
18483 calling->recv = (*(((((reg_cfp)->sp)))-(--calling->argc)-1));
18484 return vm_call_symbol(ec, reg_cfp, calling, ci, symbol);
18488vm_invoke_ifunc_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
18489 struct rb_calling_info *calling, const struct rb_callinfo *ci,
18490 __attribute__ ((__unused__)) _Bool is_lambda, VALUE block_handler)
18494 const struct rb_captured_block *captured = VM_BH_TO_IFUNC_BLOCK(block_handler);
18495 CALLER_SETUP_ARG(ec->cfp, calling, ci);
18496 CALLER_REMOVE_EMPTY_KW_SPLAT(ec->cfp, calling, ci);
18497 argc = calling->argc;
18498 val = vm_yield_with_cfunc(ec, captured, captured->self, argc, (((((reg_cfp)->sp)))-(argc)), calling->kw_splat, calling->block_handler, ((void *)0));
18499 ((((reg_cfp)->sp) -= (((argc)))));
18503vm_proc_to_block_handler(VALUE procval)
18505 const struct rb_block *block = vm_proc_block(procval);
18506 switch (vm_block_type(block)) {
18507 case block_type_iseq:
18508 return VM_BH_FROM_ISEQ_BLOCK(&block->as.captured);
18509 case block_type_ifunc:
18510 return VM_BH_FROM_IFUNC_BLOCK(&block->as.captured);
18511 case block_type_symbol:
18512 return VM_BH_FROM_SYMBOL(block->as.symbol);
18513 case block_type_proc:
18514 return VM_BH_FROM_PROC(block->as.proc);
18516 __builtin_unreachable();
18517 return ((VALUE)RUBY_Qundef);
18520vm_invoke_proc_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
18521 struct rb_calling_info *calling, const struct rb_callinfo *ci,
18522 _Bool is_lambda, VALUE block_handler)
18524 while (vm_block_handler_type(block_handler) == block_handler_type_proc) {
18525 VALUE proc = VM_BH_TO_PROC(block_handler);
18526 is_lambda = block_proc_is_lambda(proc);
18527 block_handler = vm_proc_to_block_handler(proc);
18529 return vm_invoke_block(ec, reg_cfp, calling, ci, is_lambda, block_handler);
18532vm_invoke_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
18533 struct rb_calling_info *calling, const struct rb_callinfo *ci,
18534 _Bool is_lambda, VALUE block_handler)
18536 VALUE (*func)(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
18537 struct rb_calling_info *calling, const struct rb_callinfo *ci,
18538 _Bool is_lambda, VALUE block_handler);
18539 switch (vm_block_handler_type(block_handler)) {
18540 case block_handler_type_iseq: func = vm_invoke_iseq_block; break;
18541 case block_handler_type_ifunc: func = vm_invoke_ifunc_block; break;
18542 case block_handler_type_proc: func = vm_invoke_proc_block; break;
18543 case block_handler_type_symbol: func = vm_invoke_symbol_block; break;
18544 default: rb_bug("vm_invoke_block: unreachable");
18546 return func(ec, reg_cfp, calling, ci, is_lambda, block_handler);
18549vm_make_proc_with_iseq(const rb_iseq_t *blockiseq)
18551 const rb_execution_context_t *ec = rb_current_execution_context(1);
18552 const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
18553 struct rb_captured_block *captured;
18555 rb_bug("vm_make_proc_with_iseq: unreachable");
18557 captured = VM_CFP_TO_CAPTURED_BLOCK(cfp);
18558 captured->code.iseq = blockiseq;
18559 return rb_vm_make_proc(ec, captured, rb_cProc);
18562vm_once_exec(VALUE iseq)
18564 VALUE proc = vm_make_proc_with_iseq((rb_iseq_t *)iseq);
18565 return rb_proc_call_with_block(proc, 0, 0, ((VALUE)RUBY_Qnil));
18568vm_once_clear(VALUE data)
18570 union iseq_inline_storage_entry *is = (union iseq_inline_storage_entry *)data;
18571 is->once.running_thread = ((void *)0);
18572 return ((VALUE)RUBY_Qnil);
18575check_respond_to_missing(VALUE obj, VALUE v)
18579 args[0] = obj; args[1] = ((VALUE)RUBY_Qfalse);
18580 r = rb_check_funcall(v, idRespond_to_missing, 2, args);
18581 if (r != ((VALUE)RUBY_Qundef) && RB_TEST(r)) {
18589vm_defined(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, rb_num_t op_type, VALUE obj, VALUE v)
18592 enum defined_type type = (enum defined_type)op_type;
18595 return rb_ivar_defined((((((reg_cfp)))->self)), rb_sym2id(obj));
18598 return rb_gvar_defined(rb_sym2id(obj));
18600 case DEFINED_CVAR: {
18601 const rb_cref_t *cref = vm_get_cref(((((reg_cfp)->ep))));
18602 klass = vm_get_cvar_base(cref, (((reg_cfp))), 0);
18603 return rb_cvar_defined(klass, rb_sym2id(obj));
18606 case DEFINED_CONST:
18607 case DEFINED_CONST_FROM: {
18608 _Bool allow_nil = type == DEFINED_CONST;
18610 return vm_get_ev_const(ec, klass, rb_sym2id(obj), allow_nil, 1);
18614 klass = rb_class_of(v);
18615 return rb_ec_obj_respond_to(ec, v, rb_sym2id(obj), 1);
18617 case DEFINED_METHOD:{
18618 VALUE klass = rb_class_of(v);
18619 const rb_method_entry_t *me = rb_method_entry_with_refinements(klass, rb_sym2id(obj), ((void *)0));
18621 switch ((rb_method_visibility_t)(((me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
18622 case METHOD_VISI_PRIVATE:
18624 case METHOD_VISI_PROTECTED:
18625 if (!rb_obj_is_kind_of((((((reg_cfp)))->self)), rb_class_real(me->defined_class))) {
18628 case METHOD_VISI_PUBLIC:
18632 rb_bug("vm_defined: unreachable: %u", (unsigned int)(rb_method_visibility_t)(((me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)));
18636 return check_respond_to_missing(obj, v);
18640 case DEFINED_YIELD:
18641 if (((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]) != 0) {
18645 case DEFINED_ZSUPER:
18647 const rb_callable_method_entry_t *me = rb_vm_frame_method_entry((((reg_cfp))));
18649 VALUE klass = vm_search_normal_superclass(me->defined_class);
18650 ID id = me->def->original_id;
18651 return rb_method_boundp(klass, id, 0);
18656 return vm_getspecial(ec, (VM_EP_LEP(((((reg_cfp)->ep))))), ((VALUE)RUBY_Qfalse), RB_FIX2INT(obj)) != ((VALUE)RUBY_Qnil);
18660 rb_bug("unimplemented defined? type (VM)");
18666rb_vm_defined(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, rb_num_t op_type, VALUE obj, VALUE v)
18668 return vm_defined(ec, reg_cfp, op_type, obj, v);
18670static const VALUE *
18671vm_get_ep(const VALUE *const reg_ep, rb_num_t lv)
18674 const VALUE *ep = reg_ep;
18675 for (i = 0; i < lv; i++) {
18676 ep = ((VALUE *)((ep)[(-1)] & ~0x03));
18681vm_get_special_object(const VALUE *const reg_ep,
18682 enum vm_special_object_type type)
18685 case VM_SPECIAL_OBJECT_VMCORE:
18686 return rb_mRubyVMFrozenCore;
18687 case VM_SPECIAL_OBJECT_CBASE:
18688 return vm_get_cbase(reg_ep);
18689 case VM_SPECIAL_OBJECT_CONST_BASE:
18690 return vm_get_const_base(reg_ep);
18692 rb_bug("putspecialobject insn: unknown value_type %d", type);
18696vm_concat_array(VALUE ary1, VALUE ary2st)
18698 const VALUE ary2 = ary2st;
18699 VALUE tmp1 = rb_check_to_array(ary1);
18700 VALUE tmp2 = rb_check_to_array(ary2);
18701 if (RB_NIL_P(tmp1)) {
18702 tmp1 = __extension__ ({ const VALUE args_to_new_ary[] = {ary1}; if (__builtin_constant_p(1)) { __extension__ _Static_assert(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))) == (1), "rb_ary_new_from_args" ": " "numberof(args_to_new_ary) == (1)"); } rb_ary_new_from_values(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))), args_to_new_ary); });
18704 if (RB_NIL_P(tmp2)) {
18705 tmp2 = __extension__ ({ const VALUE args_to_new_ary[] = {ary2}; if (__builtin_constant_p(1)) { __extension__ _Static_assert(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))) == (1), "rb_ary_new_from_args" ": " "numberof(args_to_new_ary) == (1)"); } rb_ary_new_from_values(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))), args_to_new_ary); });
18707 if (tmp1 == ary1) {
18708 tmp1 = rb_ary_dup(ary1);
18710 return rb_ary_concat(tmp1, tmp2);
18713vm_splat_array(VALUE flag, VALUE ary)
18715 VALUE tmp = rb_check_to_array(ary);
18716 if (RB_NIL_P(tmp)) {
18717 return __extension__ ({ const VALUE args_to_new_ary[] = {ary}; if (__builtin_constant_p(1)) { __extension__ _Static_assert(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))) == (1), "rb_ary_new_from_args" ": " "numberof(args_to_new_ary) == (1)"); } rb_ary_new_from_values(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))), args_to_new_ary); });
18719 else if (RB_TEST(flag)) {
18720 return rb_ary_dup(tmp);
18727rb_vm_splat_array(VALUE flag, VALUE ary)
18729 return vm_splat_array(flag, ary);
18732vm_check_match(rb_execution_context_t *ec, VALUE target, VALUE pattern, rb_num_t flag)
18734 enum vm_check_match_type type = ((int)flag) & 0x03;
18737 const long n = rb_array_len(pattern);
18738 for (i = 0; i < n; i++) {
18739 VALUE v = RARRAY_AREF(pattern, i);
18740 VALUE c = check_match(ec, v, target, type);
18745 return ((VALUE)RUBY_Qfalse);
18748 return check_match(ec, pattern, target, type);
18752vm_check_keyword(lindex_t bits, lindex_t idx, const VALUE *ep)
18754 const VALUE kw_bits = *(ep - bits);
18755 if (RB_FIXNUM_P(kw_bits)) {
18756 unsigned int b = (unsigned int)rb_fix2ulong(kw_bits);
18757 if ((idx < (32-1)) && (b & (0x01 << idx)))
18758 return ((VALUE)RUBY_Qfalse);
18762 if (rb_hash_has_key(kw_bits, __builtin_choose_expr( __builtin_constant_p(idx), ((VALUE)(idx)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(idx)))) return ((VALUE)RUBY_Qfalse);
18764 return ((VALUE)RUBY_Qtrue);
18767vm_dtrace(rb_event_flag_t flag, rb_execution_context_t *ec)
18775 do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
18778 do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
18781 do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
18784 do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
18790vm_const_get_under(ID id, rb_num_t flags, VALUE cbase)
18793 if ((ns = vm_search_const_defined_class(cbase, id)) == 0) {
18796 else if (((flags) & 0x08)) {
18797 return rb_public_const_get_at(ns, id);
18800 return rb_const_get_at(ns, id);
18804vm_check_if_class(ID id, rb_num_t flags, VALUE super, VALUE klass)
18806 if (!RB_TYPE_P(klass, RUBY_T_CLASS)) {
18809 else if (((flags) & 0x10)) {
18810 VALUE tmp = rb_class_real(RCLASS_SUPER(klass));
18811 if (tmp != super) {
18812 rb_raise(rb_eTypeError,
18813 "superclass mismatch for class %""l""i" "\v""",
18825vm_check_if_module(ID id, VALUE mod)
18827 if (!RB_TYPE_P(mod, RUBY_T_MODULE)) {
18835declare_under(ID id, VALUE cbase, VALUE c)
18837 rb_set_class_path_string(c, cbase, rb_id2str(id));
18838 rb_const_set(cbase, id, c);
18842vm_declare_class(ID id, rb_num_t flags, VALUE cbase, VALUE super)
18844 VALUE s = ((flags) & 0x10) ? super : rb_cObject;
18845 VALUE c = declare_under(id, cbase, rb_define_class_id(id, s));
18846 rb_define_alloc_func(c, rb_get_alloc_func(c));
18847 rb_class_inherited(s, c);
18851vm_declare_module(ID id, VALUE cbase)
18853 return declare_under(id, cbase, rb_module_new());
18855__attribute__((__noreturn__)) static void unmatched_redefinition(const char *type, VALUE cbase, ID id, VALUE old);
18857unmatched_redefinition(const char *type, VALUE cbase, ID id, VALUE old)
18859 VALUE name = rb_id2str(id);
18860 VALUE message = rb_sprintf("%""l""i" "\v"" is not a %s",
18862 VALUE location = rb_const_source_location_at(cbase, id);
18863 if (!RB_NIL_P(location)) {
18864 rb_str_catf(message, "\n%""l""i" "\v"":%""l""i" "\v"":"
18865 " previous definition of %""l""i" "\v"" was here",
18866 rb_ary_entry(location, 0), rb_ary_entry(location, 1), name);
18868 rb_exc_raise(rb_exc_new_str(rb_eTypeError, message));
18871vm_define_class(ID id, rb_num_t flags, VALUE cbase, VALUE super)
18874 if (((flags) & 0x10) && !RB_TYPE_P(super, RUBY_T_CLASS)) {
18875 rb_raise(rb_eTypeError,
18876 "superclass must be an instance of Class (given an instance of %""l""i" "\v"")",
18877 rb_obj_class(super));
18879 vm_check_if_namespace(cbase);
18880 rb_autoload_load(cbase, id);
18881 if ((klass = vm_const_get_under(id, flags, cbase)) != 0) {
18882 if (!vm_check_if_class(id, flags, super, klass))
18883 unmatched_redefinition("class", cbase, id, klass);
18887 return vm_declare_class(id, flags, cbase, super);
18891vm_define_module(ID id, rb_num_t flags, VALUE cbase)
18894 vm_check_if_namespace(cbase);
18895 if ((mod = vm_const_get_under(id, flags, cbase)) != 0) {
18896 if (!vm_check_if_module(id, mod))
18897 unmatched_redefinition("module", cbase, id, mod);
18901 return vm_declare_module(id, cbase);
18905vm_find_or_create_class_by_id(ID id,
18910 rb_vm_defineclass_type_t type = ((rb_vm_defineclass_type_t)(flags) & VM_DEFINECLASS_TYPE_MASK);
18912 case VM_DEFINECLASS_TYPE_CLASS:
18913 return vm_define_class(id, flags, cbase, super);
18914 case VM_DEFINECLASS_TYPE_SINGLETON_CLASS:
18915 return rb_singleton_class(cbase);
18916 case VM_DEFINECLASS_TYPE_MODULE:
18917 return vm_define_module(id, flags, cbase);
18919 rb_bug("unknown defineclass type: %d", (int)type);
18922static rb_method_visibility_t
18923vm_scope_visibility_get(const rb_execution_context_t *ec)
18925 const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
18926 if (!vm_env_cref_by_cref(cfp->ep)) {
18927 return METHOD_VISI_PUBLIC;
18930 return CREF_SCOPE_VISI(vm_ec_cref(ec))->method_visi;
18934vm_scope_module_func_check(const rb_execution_context_t *ec)
18936 const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
18937 if (!vm_env_cref_by_cref(cfp->ep)) {
18941 return CREF_SCOPE_VISI(vm_ec_cref(ec))->module_func;
18945vm_define_method(const rb_execution_context_t *ec, VALUE obj, ID id, VALUE iseqval, int is_singleton)
18948 rb_method_visibility_t visi;
18949 rb_cref_t *cref = vm_ec_cref(ec);
18950 if (is_singleton) {
18951 klass = rb_singleton_class(obj);
18952 visi = METHOD_VISI_PUBLIC;
18955 klass = CREF_CLASS_FOR_DEFINITION(cref);
18956 visi = vm_scope_visibility_get(ec);
18958 if (RB_NIL_P(klass)) {
18959 rb_raise(rb_eTypeError, "no class/module to add method");
18961 rb_add_method_iseq(klass, id, (const rb_iseq_t *)iseqval, cref, visi);
18962 if (!is_singleton && vm_scope_module_func_check(ec)) {
18963 klass = rb_singleton_class(klass);
18964 rb_add_method_iseq(klass, id, (const rb_iseq_t *)iseqval, cref, METHOD_VISI_PUBLIC);
18968vm_invokeblock_i(struct rb_execution_context_struct *ec,
18969 struct rb_control_frame_struct *reg_cfp,
18970 struct rb_calling_info *calling)
18972 const struct rb_callinfo *ci = calling->ci;
18973 VALUE block_handler = VM_CF_BLOCK_HANDLER((((reg_cfp))));
18974 if (block_handler == 0) {
18975 rb_vm_localjump_error("no block given (yield)", ((VALUE)RUBY_Qnil), 0);
18978 return vm_invoke_block(ec, (((reg_cfp))), calling, ci, 0, block_handler);
18981static const struct rb_callcache *
18982vm_search_method_wrap(const struct rb_control_frame_struct *reg_cfp, struct rb_call_data *cd, VALUE recv)
18984 return vm_search_method((VALUE)reg_cfp->iseq, cd, recv);
18986static const struct rb_callcache *
18987vm_search_invokeblock(const struct rb_control_frame_struct *reg_cfp, struct rb_call_data *cd, VALUE recv)
18989 static const struct rb_callcache cc = {
18990 .flags = RUBY_T_IMEMO | (imemo_callcache << ((VALUE)RUBY_FL_USHIFT)) | ((VALUE)RUBY_FL_USER4),
18993 .call_ = vm_invokeblock_i,
19001 struct rb_execution_context_struct *ec,
19002 struct rb_control_frame_struct *reg_cfp,
19003 struct rb_call_data *cd,
19004 VALUE block_handler,
19005 const struct rb_callcache *(*method_explorer)(const struct rb_control_frame_struct *cfp, struct rb_call_data *cd, VALUE recv)
19007 VALUE val = ((VALUE)RUBY_Qundef);
19008 const struct rb_callinfo *ci = cd->ci;
19009 const struct rb_callcache *cc;
19010 int argc = vm_ci_argc(ci);
19011 VALUE recv = (*(((((reg_cfp)->sp)))-(argc)-1));
19012 struct rb_calling_info calling = {
19013 .block_handler = block_handler,
19014 .kw_splat = (vm_ci_flag(ci) & (0x01 << VM_CALL_KW_SPLAT_bit)) > 0,
19019 calling.cc = cc = method_explorer((((reg_cfp))), cd, recv);
19020 val = vm_cc_call(cc)(ec, (((reg_cfp))), &calling);
19021 if (val != ((VALUE)RUBY_Qundef)) {
19025 do { (reg_cfp) = ec->cfp; } while (0);
19027 if (((((reg_cfp)))->iseq)->body->catch_except_p) {
19028 VM_ENV_FLAGS_SET(((((reg_cfp)->ep))), VM_FRAME_FLAG_FINISH);
19029 return rb_vm_exec(ec, 1);
19031 else if ((val = mjit_exec(ec)) == ((VALUE)RUBY_Qundef)) {
19032 VM_ENV_FLAGS_SET(((((reg_cfp)->ep))), VM_FRAME_FLAG_FINISH);
19033 return rb_vm_exec(ec, 0);
19039VALUE rb_nil_to_s(VALUE);
19040VALUE rb_true_to_s(VALUE);
19041VALUE rb_false_to_s(VALUE);
19042VALUE rb_int_to_s(int argc, VALUE *argv, VALUE x);
19043VALUE rb_fix_to_s(VALUE);
19044VALUE rb_mod_to_s(VALUE);
19045VALUE rb_mod_name(VALUE);
19047vm_objtostring(const rb_iseq_t *iseq, VALUE recv, CALL_DATA cd)
19049 const struct rb_callcache *cc = vm_search_method((VALUE)iseq, cd, recv);
19050 switch (((int)rb_type(recv))) {
19051 case RUBY_T_STRING:
19053 case RUBY_T_SYMBOL:
19054 if (check_cfunc(vm_cc_cme(cc), rb_sym_to_s)) {
19055 return rb_sym2str(recv);
19058 case RUBY_T_MODULE:
19060 if (check_cfunc(vm_cc_cme(cc), rb_mod_to_s)) {
19061 VALUE val = rb_mod_name(recv);
19062 if (val == ((VALUE)RUBY_Qnil)) {
19063 val = rb_mod_to_s(recv);
19069 if (check_cfunc(vm_cc_cme(cc), rb_nil_to_s)) {
19070 return rb_nil_to_s(recv);
19074 if (check_cfunc(vm_cc_cme(cc), rb_true_to_s)) {
19075 return rb_true_to_s(recv);
19079 if (check_cfunc(vm_cc_cme(cc), rb_false_to_s)) {
19080 return rb_false_to_s(recv);
19083 case RUBY_T_FIXNUM:
19084 if (check_cfunc(vm_cc_cme(cc), rb_int_to_s)) {
19085 return rb_fix_to_s(recv);
19089 return ((VALUE)RUBY_Qundef);
19092vm_opt_str_freeze(VALUE str, int bop, ID id)
19094 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
19098 return ((VALUE)RUBY_Qundef);
19102vm_opt_newarray_max(rb_execution_context_t *ec, rb_num_t num, const VALUE *ptr)
19104 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MAX)]&((1 << 3))) == 0), 1)))) {
19106 return ((VALUE)RUBY_Qnil);
19109 struct cmp_opt_data cmp_opt = { 0, 0 };
19110 VALUE result = *ptr;
19111 rb_snum_t i = num - 1;
19113 const VALUE v = *++ptr;
19114 if (((RB_FIXNUM_P(v) && RB_FIXNUM_P(result) && (((cmp_opt).opt_inited & (1U << cmp_opt_Integer)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Integer)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Integer)), rb_method_basic_definition_p(rb_cInteger, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Integer))))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : ((RB_TYPE_P((v), RUBY_T_STRING) && rb_class_of(v) == rb_cString) && (RB_TYPE_P((result), RUBY_T_STRING) && rb_class_of(result) == rb_cString) && (((cmp_opt).opt_inited & (1U << cmp_opt_String)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_String)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_String)), rb_method_basic_definition_p(rb_cString, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_String))))) ? rb_str_cmp(v, result) : (RB_FLOAT_TYPE_P(v) && RB_FLOAT_TYPE_P(result) && (((cmp_opt).opt_inited & (1U << cmp_opt_Float)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Float)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Float)), rb_method_basic_definition_p(rb_cFloat, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Float))))) ? rb_float_cmp(v, result) : rb_cmpint(rb_funcallv(v, idCmp, 1, &result), v, result)) > 0) {
19122 return rb_vm_call_with_refinements(ec, rb_ary_new_from_values(num, ptr), idMax, 0, ((void *)0), 0);
19126vm_opt_newarray_min(rb_execution_context_t *ec, rb_num_t num, const VALUE *ptr)
19128 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MIN)]&((1 << 3))) == 0), 1)))) {
19130 return ((VALUE)RUBY_Qnil);
19133 struct cmp_opt_data cmp_opt = { 0, 0 };
19134 VALUE result = *ptr;
19135 rb_snum_t i = num - 1;
19137 const VALUE v = *++ptr;
19138 if (((RB_FIXNUM_P(v) && RB_FIXNUM_P(result) && (((cmp_opt).opt_inited & (1U << cmp_opt_Integer)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Integer)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Integer)), rb_method_basic_definition_p(rb_cInteger, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Integer))))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : ((RB_TYPE_P((v), RUBY_T_STRING) && rb_class_of(v) == rb_cString) && (RB_TYPE_P((result), RUBY_T_STRING) && rb_class_of(result) == rb_cString) && (((cmp_opt).opt_inited & (1U << cmp_opt_String)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_String)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_String)), rb_method_basic_definition_p(rb_cString, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_String))))) ? rb_str_cmp(v, result) : (RB_FLOAT_TYPE_P(v) && RB_FLOAT_TYPE_P(result) && (((cmp_opt).opt_inited & (1U << cmp_opt_Float)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Float)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Float)), rb_method_basic_definition_p(rb_cFloat, idCmp) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Float))))) ? rb_float_cmp(v, result) : rb_cmpint(rb_funcallv(v, idCmp, 1, &result), v, result)) < 0) {
19146 return rb_vm_call_with_refinements(ec, rb_ary_new_from_values(num, ptr), idMin, 0, ((void *)0), 0);
19150vm_inlined_ic_hit_p(VALUE flags, VALUE value, const rb_cref_t *ic_cref, rb_serial_t ic_serial, const VALUE *reg_ep)
19152 if (ic_serial == (ruby_vm_global_constant_state) &&
19153 ((flags & ((VALUE)RUBY_FL_USER4)) || rb_ractor_main_p())) {
19155 return (ic_cref == ((void *)0) ||
19156 ic_cref == vm_get_cref(reg_ep));
19161vm_ic_hit_p(const struct iseq_inline_constant_cache_entry *ice, const VALUE *reg_ep)
19164 return vm_inlined_ic_hit_p(ice->flags, ice->value, ice->ic_cref, (ice)->ic_serial.raw, reg_ep);
19167rb_vm_ic_hit_p(IC ic, const VALUE *reg_ep)
19169 return ic->entry && vm_ic_hit_p(ic->entry, reg_ep);
19171COLDFUNC static void
19172vm_ic_update(const rb_iseq_t *iseq, IC ic, VALUE val, const VALUE *reg_ep) {
19173 struct iseq_inline_constant_cache_entry *ice = (struct iseq_inline_constant_cache_entry *)rb_imemo_new(imemo_constcache, 0, 0, 0, 0);
19174 rb_obj_write((VALUE)(ice), __extension__({
19176 ; __typeof__((VALUE *)(&ice->value)) unaligned_member_access_result = ((VALUE *)(&ice->value));
19177 ; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 4963);
19178 ice->ic_cref = vm_get_const_key_cref(reg_ep);
19179 (ice)->ic_serial.raw = ((ruby_vm_global_constant_state) - ruby_vm_const_missing_count);
19180 if (rb_ractor_shareable_p(val)) ice->flags |= ((VALUE)RUBY_FL_USER4);
19181 ruby_vm_const_missing_count = 0;
19182 rb_obj_write((VALUE)(iseq), __extension__({
19184 ; __typeof__((VALUE *)(&ic->entry)) unaligned_member_access_result = ((VALUE *)(&ic->entry));
19185 ; unaligned_member_access_result; }), (VALUE)(ice), "./vm_insnhelper.c", 4968);
19188vm_once_dispatch(rb_execution_context_t *ec, ISEQ iseq, ISE is)
19190 rb_thread_t *th = rb_ec_thread_ptr(ec);
19191 rb_thread_t *const RUNNING_THREAD_ONCE_DONE = (rb_thread_t *)(0x1);
19193 if (is->once.running_thread == RUNNING_THREAD_ONCE_DONE) {
19194 return is->once.value;
19196 else if (is->once.running_thread == ((void *)0)) {
19198 is->once.running_thread = th;
19199 val = rb_ensure(vm_once_exec, (VALUE)iseq, vm_once_clear, (VALUE)is);
19200 rb_obj_write((VALUE)(ec->cfp->iseq), __extension__({
19202; __typeof__((VALUE *)(&is->once.value)) unaligned_member_access_result = ((VALUE *)(&is->once.value));
19203; unaligned_member_access_result; }), (VALUE)(val), "./vm_insnhelper.c", 4990);
19204 is->once.running_thread = RUNNING_THREAD_ONCE_DONE;
19207 else if (is->once.running_thread == th) {
19208 return vm_once_exec((VALUE)iseq);
19211 rb_vm_check_ints(ec);
19212 rb_thread_schedule();
19217vm_case_dispatch(CDHASH hash, OFFSET else_offset, VALUE key)
19219 switch (__extension__({ VALUE arg_obj = (key); RB_SPECIAL_CONST_P(arg_obj) ? -1 : (int)RB_BUILTIN_TYPE(arg_obj); })) {
19222 case RUBY_T_SYMBOL:
19223 case RUBY_T_BIGNUM:
19224 case RUBY_T_STRING:
19225 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQQ)]&((1 << 6) | (1 << 0) | (1 << 1) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 2))) == 0), 1)))) {
19227 if (RB_FLOAT_TYPE_P(key)) {
19228 double kval = rb_float_value_inline(key);
19229 if (!__builtin_isinf_sign (kval) && modf(kval, &kval) == 0.0) {
19230 key = (((kval) < (0x7fffffffffffffffL / 2) + 1) && ((kval) >= ((-0x7fffffffffffffffL - 1L) / 2))) ? RB_INT2FIX((long)kval) : rb_dbl2big(kval);
19233 if (rb_hash_stlike_lookup(hash, key, &val)) {
19234 return rb_fix2long((VALUE)val);
19237 return else_offset;
19243__attribute__((__noreturn__)) static void vm_stack_consistency_error(const rb_execution_context_t *ec, const rb_control_frame_t *, const VALUE *);
19245vm_stack_consistency_error(const rb_execution_context_t *ec,
19246 const rb_control_frame_t *cfp,
19249 const ptrdiff_t nsp = ((cfp->sp) - (ec)->vm_stack);
19250 const ptrdiff_t nbp = ((bp) - (ec)->vm_stack);
19251 static const char stack_consistency_error[] =
19252 "Stack consistency error (sp: %""t""d"", bp: %""t""d"")";
19253 VALUE mesg = rb_sprintf(stack_consistency_error, nsp, nbp);
19254 ((__builtin_constant_p("\n") ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((mesg), ("\n")));
19255 rb_str_append(mesg, rb_iseq_disasm(cfp->iseq));
19256 rb_exc_fatal(rb_exc_new_str(rb_eFatal, mesg));
19258ALWAYS_INLINE(static inline VALUE
19259vm_opt_plus(VALUE recv, VALUE obj));
19261vm_opt_plus(VALUE recv, VALUE obj) {
19262 if (FIXNUM_2_P(recv, obj) &&
19263 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 0))) == 0), 1)))) {
19264 return rb_fix_plus_fix(recv, obj);
19266 else if (FLONUM_2_P(recv, obj) &&
19267 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) {
19268 return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj));
19270 else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
19271 return ((VALUE)RUBY_Qundef);
19273 else if (RBASIC_CLASS(recv) == rb_cFloat &&
19274 RBASIC_CLASS(obj) == rb_cFloat &&
19275 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) {
19276 return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj));
19278 else if (RBASIC_CLASS(recv) == rb_cString &&
19279 RBASIC_CLASS(obj) == rb_cString &&
19280 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 2))) == 0), 1)))) {
19281 return rb_str_opt_plus(recv, obj);
19283 else if (RBASIC_CLASS(recv) == rb_cArray &&
19284 RBASIC_CLASS(obj) == rb_cArray &&
19285 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 3))) == 0), 1)))) {
19286 return rb_ary_plus(recv, obj);
19289 return ((VALUE)RUBY_Qundef);
19292ALWAYS_INLINE(static inline VALUE
19293vm_opt_minus(VALUE recv, VALUE obj));
19295vm_opt_minus(VALUE recv, VALUE obj) {
19296 if (FIXNUM_2_P(recv, obj) &&
19297 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 0))) == 0), 1)))) {
19298 return rb_fix_minus_fix(recv, obj);
19300 else if (FLONUM_2_P(recv, obj) &&
19301 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) {
19302 return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj));
19304 else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
19305 return ((VALUE)RUBY_Qundef);
19307 else if (RBASIC_CLASS(recv) == rb_cFloat &&
19308 RBASIC_CLASS(obj) == rb_cFloat &&
19309 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) {
19310 return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj));
19313 return ((VALUE)RUBY_Qundef);
19316ALWAYS_INLINE(static inline VALUE
19317vm_opt_mult(VALUE recv, VALUE obj));
19319vm_opt_mult(VALUE recv, VALUE obj) {
19320 if (FIXNUM_2_P(recv, obj) &&
19321 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 0))) == 0), 1)))) {
19322 return rb_fix_mul_fix(recv, obj);
19324 else if (FLONUM_2_P(recv, obj) &&
19325 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) {
19326 return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj));
19328 else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
19329 return ((VALUE)RUBY_Qundef);
19331 else if (RBASIC_CLASS(recv) == rb_cFloat &&
19332 RBASIC_CLASS(obj) == rb_cFloat &&
19333 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) {
19334 return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj));
19337 return ((VALUE)RUBY_Qundef);
19340ALWAYS_INLINE(static inline VALUE
19341vm_opt_div(VALUE recv, VALUE obj));
19343vm_opt_div(VALUE recv, VALUE obj) {
19344 if (FIXNUM_2_P(recv, obj) &&
19345 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 0))) == 0), 1)))) {
19346 return (rb_fix2long(obj) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_div_fix(recv, obj);
19348 else if (FLONUM_2_P(recv, obj) &&
19349 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) {
19350 return rb_flo_div_flo(recv, obj);
19352 else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
19353 return ((VALUE)RUBY_Qundef);
19355 else if (RBASIC_CLASS(recv) == rb_cFloat &&
19356 RBASIC_CLASS(obj) == rb_cFloat &&
19357 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) {
19358 return rb_flo_div_flo(recv, obj);
19361 return ((VALUE)RUBY_Qundef);
19364ALWAYS_INLINE(static inline VALUE
19365vm_opt_mod(VALUE recv, VALUE obj));
19367vm_opt_mod(VALUE recv, VALUE obj) {
19368 if (FIXNUM_2_P(recv, obj) &&
19369 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 0))) == 0), 1)))) {
19370 return (rb_fix2long(obj) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_mod_fix(recv, obj);
19372 else if (FLONUM_2_P(recv, obj) &&
19373 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) {
19374 return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj)));
19376 else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
19377 return ((VALUE)RUBY_Qundef);
19379 else if (RBASIC_CLASS(recv) == rb_cFloat &&
19380 RBASIC_CLASS(obj) == rb_cFloat &&
19381 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) {
19382 return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj)));
19385 return ((VALUE)RUBY_Qundef);
19389rb_vm_opt_mod(VALUE recv, VALUE obj)
19391 return vm_opt_mod(recv, obj);
19393ALWAYS_INLINE(static inline VALUE
19394vm_opt_neq(const rb_iseq_t *iseq, CALL_DATA cd, CALL_DATA cd_eq, VALUE recv, VALUE obj));
19396vm_opt_neq(const rb_iseq_t *iseq, CALL_DATA cd, CALL_DATA cd_eq, VALUE recv, VALUE obj) {
19397 if (vm_method_cfunc_is(iseq, cd, recv, rb_obj_not_equal)) {
19398 VALUE val = opt_equality(iseq, recv, obj, cd_eq);
19399 if (val != ((VALUE)RUBY_Qundef)) {
19400 return RB_TEST(val) ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
19403 return ((VALUE)RUBY_Qundef);
19405ALWAYS_INLINE(static inline VALUE
19406vm_opt_lt(VALUE recv, VALUE obj));
19408vm_opt_lt(VALUE recv, VALUE obj) {
19409 if (FIXNUM_2_P(recv, obj) &&
19410 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 0))) == 0), 1)))) {
19411 return (((long)recv < (long)obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
19413 else if (FLONUM_2_P(recv, obj) &&
19414 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) {
19415 return ((rb_float_value_inline(recv) < rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
19417 else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
19418 return ((VALUE)RUBY_Qundef);
19420 else if (RBASIC_CLASS(recv) == rb_cFloat &&
19421 RBASIC_CLASS(obj) == rb_cFloat &&
19422 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) {
19424 return ((rb_float_value_inline(recv) < rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
19427 return ((VALUE)RUBY_Qundef);
19430ALWAYS_INLINE(static inline VALUE
19431vm_opt_le(VALUE recv, VALUE obj));
19433vm_opt_le(VALUE recv, VALUE obj) {
19434 if (FIXNUM_2_P(recv, obj) &&
19435 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 0))) == 0), 1)))) {
19436 return (((long)recv <= (long)obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
19438 else if (FLONUM_2_P(recv, obj) &&
19439 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) {
19440 return ((rb_float_value_inline(recv) <= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
19442 else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
19443 return ((VALUE)RUBY_Qundef);
19445 else if (RBASIC_CLASS(recv) == rb_cFloat &&
19446 RBASIC_CLASS(obj) == rb_cFloat &&
19447 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) {
19449 return ((rb_float_value_inline(recv) <= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
19452 return ((VALUE)RUBY_Qundef);
19455ALWAYS_INLINE(static inline VALUE
19456vm_opt_gt(VALUE recv, VALUE obj));
19458vm_opt_gt(VALUE recv, VALUE obj) {
19459 if (FIXNUM_2_P(recv, obj) &&
19460 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 0))) == 0), 1)))) {
19461 return (((long)recv > (long)obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
19463 else if (FLONUM_2_P(recv, obj) &&
19464 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) {
19465 return ((rb_float_value_inline(recv) > rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
19467 else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
19468 return ((VALUE)RUBY_Qundef);
19470 else if (RBASIC_CLASS(recv) == rb_cFloat &&
19471 RBASIC_CLASS(obj) == rb_cFloat &&
19472 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) {
19474 return ((rb_float_value_inline(recv) > rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
19477 return ((VALUE)RUBY_Qundef);
19480ALWAYS_INLINE(static inline VALUE
19481vm_opt_ge(VALUE recv, VALUE obj));
19483vm_opt_ge(VALUE recv, VALUE obj) {
19484 if (FIXNUM_2_P(recv, obj) &&
19485 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 0))) == 0), 1)))) {
19486 return (((long)recv >= (long)obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
19488 else if (FLONUM_2_P(recv, obj) &&
19489 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) {
19490 return ((rb_float_value_inline(recv) >= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
19492 else if (RB_SPECIAL_CONST_P(recv) || RB_SPECIAL_CONST_P(obj)) {
19493 return ((VALUE)RUBY_Qundef);
19495 else if (RBASIC_CLASS(recv) == rb_cFloat &&
19496 RBASIC_CLASS(obj) == rb_cFloat &&
19497 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) {
19499 return ((rb_float_value_inline(recv) >= rb_float_value_inline(obj)) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
19502 return ((VALUE)RUBY_Qundef);
19505ALWAYS_INLINE(static inline VALUE
19506vm_opt_ltlt(VALUE recv, VALUE obj));
19508vm_opt_ltlt(VALUE recv, VALUE obj) {
19509 if (RB_SPECIAL_CONST_P(recv)) {
19510 return ((VALUE)RUBY_Qundef);
19512 else if (RBASIC_CLASS(recv) == rb_cString &&
19513 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LTLT)]&((1 << 2))) == 0), 1)))) {
19514 return rb_str_concat(recv, obj);
19516 else if (RBASIC_CLASS(recv) == rb_cArray &&
19517 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LTLT)]&((1 << 3))) == 0), 1)))) {
19518 return rb_ary_push(recv, obj);
19521 return ((VALUE)RUBY_Qundef);
19524ALWAYS_INLINE(static inline VALUE
19525vm_opt_and(VALUE recv, VALUE obj));
19527vm_opt_and(VALUE recv, VALUE obj) {
19528 if (FIXNUM_2_P(recv, obj) &&
19529 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AND)]&((1 << 0))) == 0), 1)))) {
19530 return (recv & obj) | 1;
19533 return ((VALUE)RUBY_Qundef);
19536ALWAYS_INLINE(static inline VALUE
19537vm_opt_or(VALUE recv, VALUE obj));
19539vm_opt_or(VALUE recv, VALUE obj) {
19540 if (FIXNUM_2_P(recv, obj) &&
19541 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_OR)]&((1 << 0))) == 0), 1)))) {
19545 return ((VALUE)RUBY_Qundef);
19548ALWAYS_INLINE(static inline VALUE
19549vm_opt_aref(VALUE recv, VALUE obj));
19551vm_opt_aref(VALUE recv, VALUE obj) {
19552 if (RB_SPECIAL_CONST_P(recv)) {
19553 if (FIXNUM_2_P(recv, obj) &&
19554 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 0))) == 0), 1)))) {
19555 return rb_fix_aref(recv, obj);
19557 return ((VALUE)RUBY_Qundef);
19559 else if (RBASIC_CLASS(recv) == rb_cArray &&
19560 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 3))) == 0), 1)))) {
19561 if (RB_FIXNUM_P(obj)) {
19562 return rb_ary_entry_internal(recv, rb_fix2long(obj));
19565 return rb_ary_aref1(recv, obj);
19568 else if (RBASIC_CLASS(recv) == rb_cHash &&
19569 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1)))) {
19570 return rb_hash_aref(recv, obj);
19573 return ((VALUE)RUBY_Qundef);
19576ALWAYS_INLINE(static inline VALUE
19577vm_opt_aset(VALUE recv, VALUE obj, VALUE set));
19579vm_opt_aset(VALUE recv, VALUE obj, VALUE set) {
19580 if (RB_SPECIAL_CONST_P(recv)) {
19581 return ((VALUE)RUBY_Qundef);
19583 else if (RBASIC_CLASS(recv) == rb_cArray &&
19584 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 3))) == 0), 1))) &&
19585 RB_FIXNUM_P(obj)) {
19586 rb_ary_store(recv, rb_fix2long(obj), set);
19589 else if (RBASIC_CLASS(recv) == rb_cHash &&
19590 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1)))) {
19591 rb_hash_aset(recv, obj, set);
19595 return ((VALUE)RUBY_Qundef);
19598ALWAYS_INLINE(static inline VALUE
19599vm_opt_aref_with(VALUE recv, VALUE key));
19601vm_opt_aref_with(VALUE recv, VALUE key) {
19602 if (!RB_SPECIAL_CONST_P(recv) && RBASIC_CLASS(recv) == rb_cHash &&
19603 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1))) &&
19604 rb_hash_compare_by_id_p(recv) == ((VALUE)RUBY_Qfalse)) {
19605 return rb_hash_aref(recv, key);
19608 return ((VALUE)RUBY_Qundef);
19611ALWAYS_INLINE(static inline VALUE
19612vm_opt_aset_with(VALUE recv, VALUE key, VALUE val));
19614vm_opt_aset_with(VALUE recv, VALUE key, VALUE val) {
19615 if (!RB_SPECIAL_CONST_P(recv) && RBASIC_CLASS(recv) == rb_cHash &&
19616 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1))) &&
19617 rb_hash_compare_by_id_p(recv) == ((VALUE)RUBY_Qfalse)) {
19618 return rb_hash_aset(recv, key, val);
19621 return ((VALUE)RUBY_Qundef);
19625vm_opt_length(VALUE recv, int bop)
19627 if (RB_SPECIAL_CONST_P(recv)) {
19628 return ((VALUE)RUBY_Qundef);
19630 else if (RBASIC_CLASS(recv) == rb_cString &&
19631 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
19632 if (bop == BOP_EMPTY_P) {
19633 return rb_long2num_inline(RSTRING_LEN(recv));
19636 return rb_str_length(recv);
19639 else if (RBASIC_CLASS(recv) == rb_cArray &&
19640 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 3))) == 0), 1)))) {
19641 return rb_long2num_inline(rb_array_len(recv));
19643 else if (RBASIC_CLASS(recv) == rb_cHash &&
19644 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 4))) == 0), 1)))) {
19645 return __builtin_choose_expr( __builtin_constant_p(RHASH_SIZE(recv)), ((VALUE)(RHASH_SIZE(recv))) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(RHASH_SIZE(recv)));
19648 return ((VALUE)RUBY_Qundef);
19652vm_opt_empty_p(VALUE recv)
19654 switch (vm_opt_length(recv, BOP_EMPTY_P)) {
19655 case ((VALUE)RUBY_Qundef): return ((VALUE)RUBY_Qundef);
19656 case __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0)): return ((VALUE)RUBY_Qtrue);
19657 default: return ((VALUE)RUBY_Qfalse);
19660VALUE rb_false(VALUE obj);
19662vm_opt_nil_p(const rb_iseq_t *iseq, CALL_DATA cd, VALUE recv)
19664 if (RB_NIL_P(recv) &&
19665 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_NIL_P)]&((1 << 9))) == 0), 1)))) {
19666 return ((VALUE)RUBY_Qtrue);
19668 else if (vm_method_cfunc_is(iseq, cd, recv, rb_false)) {
19669 return ((VALUE)RUBY_Qfalse);
19672 return ((VALUE)RUBY_Qundef);
19680 return __builtin_choose_expr( __builtin_constant_p(0), ((VALUE)(0)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(0));
19681 case ((~0UL)>>(int)(1)):
19682 return rb_uint2big(1UL << (8 * 8 - 2));
19688vm_opt_succ(VALUE recv)
19690 if (RB_FIXNUM_P(recv) &&
19691 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_SUCC)]&((1 << 0))) == 0), 1)))) {
19692 return fix_succ(recv);
19694 else if (RB_SPECIAL_CONST_P(recv)) {
19695 return ((VALUE)RUBY_Qundef);
19697 else if (RBASIC_CLASS(recv) == rb_cString &&
19698 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_SUCC)]&((1 << 2))) == 0), 1)))) {
19699 return rb_str_succ(recv);
19702 return ((VALUE)RUBY_Qundef);
19705ALWAYS_INLINE(static inline VALUE
19706vm_opt_not(const rb_iseq_t *iseq, CALL_DATA cd, VALUE recv));
19708vm_opt_not(const rb_iseq_t *iseq, CALL_DATA cd, VALUE recv) {
19709 if (vm_method_cfunc_is(iseq, cd, recv, rb_obj_not)) {
19710 return RB_TEST(recv) ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
19713 return ((VALUE)RUBY_Qundef);
19717vm_opt_regexpmatch2(VALUE recv, VALUE obj)
19719 if (RB_SPECIAL_CONST_P(recv)) {
19720 return ((VALUE)RUBY_Qundef);
19722 else if (RBASIC_CLASS(recv) == rb_cString &&
19723 rb_class_of(obj) == rb_cRegexp &&
19724 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MATCH)]&((1 << 2))) == 0), 1)))) {
19725 return rb_reg_match(obj, recv);
19727 else if (RBASIC_CLASS(recv) == rb_cRegexp &&
19728 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MATCH)]&((1 << 8))) == 0), 1)))) {
19729 return rb_reg_match(recv, obj);
19732 return ((VALUE)RUBY_Qundef);
19735rb_event_flag_t rb_iseq_event_flags(const rb_iseq_t *iseq, size_t pos);
19736__attribute__((__noinline__)) static void vm_trace(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp);
19738vm_trace_hook(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const VALUE *pc,
19739 rb_event_flag_t pc_events, rb_event_flag_t target_event,
19740 rb_hook_list_t *global_hooks, rb_hook_list_t *local_hooks, VALUE val)
19742 rb_event_flag_t event = pc_events & target_event;
19743 VALUE self = (((((reg_cfp)))->self));
19745 if (event & global_hooks->events) {
19747 vm_dtrace(event, ec);
19748 rb_exec_event_hook_orig(ec, global_hooks, event, self, 0, 0, 0 , val, 0);
19751 if (local_hooks != ((void *)0)) {
19752 if (event & local_hooks->events) {
19754 rb_exec_event_hook_orig(ec, local_hooks, event, self, 0, 0, 0 , val, 0);
19760rb_vm_opt_cfunc_p(CALL_CACHE cc, int insn)
19763 case YARVINSN_opt_eq:
19764 return check_cfunc(vm_cc_cme(cc), rb_obj_equal);
19765 case YARVINSN_opt_nil_p:
19766 return check_cfunc(vm_cc_cme(cc), rb_false);
19767 case YARVINSN_opt_not:
19768 return check_cfunc(vm_cc_cme(cc), rb_obj_not);
19774vm_trace(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp)
19776 const VALUE *pc = reg_cfp->pc;
19777 rb_event_flag_t enabled_flags = ruby_vm_event_flags & (0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010| 0x0020| 0x0040| 0x0100| 0x0200| 0x010000| 0x020000);
19778 rb_event_flag_t global_events = enabled_flags;
19779 if (enabled_flags == 0 && ruby_vm_event_local_num == 0) {
19783 const rb_iseq_t *iseq = reg_cfp->iseq;
19784 size_t pos = pc - iseq->body->iseq_encoded;
19785 rb_event_flag_t pc_events = rb_iseq_event_flags(iseq, pos);
19786 rb_hook_list_t *local_hooks = iseq->aux.exec.local_hooks;
19787 rb_event_flag_t iseq_local_events = local_hooks != ((void *)0) ? local_hooks->events : 0;
19788 rb_hook_list_t *bmethod_local_hooks = ((void *)0);
19789 rb_event_flag_t bmethod_local_events = 0;
19790 _Bool bmethod_frame = VM_FRAME_BMETHOD_P(reg_cfp);
19791 enabled_flags |= iseq_local_events;
19793 if (bmethod_frame) {
19794 const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(reg_cfp);
19796 bmethod_local_hooks = me->def->body.bmethod.hooks;
19797 if (bmethod_local_hooks) {
19798 bmethod_local_events = bmethod_local_hooks->events;
19801 if ((pc_events & enabled_flags) == 0 && !bmethod_frame) {
19804 else if (ec->trace_arg != ((void *)0)) {
19808 rb_hook_list_t *global_hooks = rb_ec_ractor_hooks(ec);
19809 rb_event_flag_t bmethod_events = global_events | bmethod_local_events;
19811 ruby_debug_printf("vm_trace>>%4d (%4x) - %s:%d %s\n",
19814 RSTRING_PTR(rb_iseq_path(iseq)),
19815 (int)rb_iseq_line_no(iseq, pos),
19816 RSTRING_PTR(rb_iseq_label(iseq)));
19820 if ((pc_events & 0x0100) && bmethod_frame && (bmethod_events & 0x0008)) {
19821 vm_trace_hook(ec, reg_cfp, pc, 0x0008, 0x0008, global_hooks, bmethod_local_hooks, ((VALUE)RUBY_Qundef));
19823 do { if ((pc_events & (0x0002 | 0x0008 | 0x0100)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0002 | 0x0008 | 0x0100), global_hooks, local_hooks, (((VALUE)RUBY_Qundef))); } } while (0);
19824 do { if ((pc_events & (0x0001)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0001), global_hooks, local_hooks, (((VALUE)RUBY_Qundef))); } } while (0);
19825 do { if ((pc_events & (0x010000)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x010000), global_hooks, local_hooks, (((VALUE)RUBY_Qundef))); } } while (0);
19826 do { if ((pc_events & (0x020000)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x020000), global_hooks, local_hooks, (((VALUE)RUBY_Qundef))); } } while (0);
19827 do { if ((pc_events & (0x0004 | 0x0010 | 0x0200)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0004 | 0x0010 | 0x0200), global_hooks, local_hooks, ((*(((((reg_cfp)->sp)))-(0)-1)))); } } while (0);
19828 if ((pc_events & 0x0200) && bmethod_frame && (bmethod_events & 0x0010)) {
19829 vm_trace_hook(ec, reg_cfp, pc, 0x0010, 0x0010, global_hooks, bmethod_local_hooks, (*(((((reg_cfp)->sp)))-(0)-1)));
19834void Init_vm_stack_canary(void) { }
19836builtin_invoker0(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19838 typedef VALUE (*rb_invoke_funcptr0_t)(rb_execution_context_t *ec, VALUE self);
19839 return (*(rb_invoke_funcptr0_t)funcptr)(ec, self);
19842builtin_invoker1(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19844 typedef VALUE (*rb_invoke_funcptr1_t)(rb_execution_context_t *ec, VALUE self, VALUE v1);
19845 return (*(rb_invoke_funcptr1_t)funcptr)(ec, self, argv[0]);
19848builtin_invoker2(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19850 typedef VALUE (*rb_invoke_funcptr2_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2);
19851 return (*(rb_invoke_funcptr2_t)funcptr)(ec, self, argv[0], argv[1]);
19854builtin_invoker3(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19856 typedef VALUE (*rb_invoke_funcptr3_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3);
19857 return (*(rb_invoke_funcptr3_t)funcptr)(ec, self, argv[0], argv[1], argv[2]);
19860builtin_invoker4(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19862 typedef VALUE (*rb_invoke_funcptr4_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4);
19863 return (*(rb_invoke_funcptr4_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3]);
19866builtin_invoker5(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19868 typedef VALUE (*rb_invoke_funcptr5_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5);
19869 return (*(rb_invoke_funcptr5_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4]);
19872builtin_invoker6(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19874 typedef VALUE (*rb_invoke_funcptr6_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6);
19875 return (*(rb_invoke_funcptr6_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
19878builtin_invoker7(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19880 typedef VALUE (*rb_invoke_funcptr7_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7);
19881 return (*(rb_invoke_funcptr7_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
19884builtin_invoker8(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19886 typedef VALUE (*rb_invoke_funcptr8_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8);
19887 return (*(rb_invoke_funcptr8_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
19890builtin_invoker9(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19892 typedef VALUE (*rb_invoke_funcptr9_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9);
19893 return (*(rb_invoke_funcptr9_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]);
19896builtin_invoker10(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19898 typedef VALUE (*rb_invoke_funcptr10_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10);
19899 return (*(rb_invoke_funcptr10_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
19902builtin_invoker11(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19904 typedef VALUE (*rb_invoke_funcptr11_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11);
19905 return (*(rb_invoke_funcptr11_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10]);
19908builtin_invoker12(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19910 typedef VALUE (*rb_invoke_funcptr12_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12);
19911 return (*(rb_invoke_funcptr12_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11]);
19914builtin_invoker13(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19916 typedef VALUE (*rb_invoke_funcptr13_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12, VALUE v13);
19917 return (*(rb_invoke_funcptr13_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12]);
19920builtin_invoker14(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19922 typedef VALUE (*rb_invoke_funcptr14_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12, VALUE v13, VALUE v14);
19923 return (*(rb_invoke_funcptr14_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13]);
19926builtin_invoker15(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
19928 typedef VALUE (*rb_invoke_funcptr15_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8, VALUE v9, VALUE v10, VALUE v11, VALUE v12, VALUE v13, VALUE v14, VALUE v15);
19929 return (*(rb_invoke_funcptr15_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9], argv[10], argv[11], argv[12], argv[13], argv[14]);
19931typedef VALUE (*builtin_invoker)(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr);
19932static builtin_invoker
19933lookup_builtin_invoker(int argc)
19935 static const builtin_invoker invokers[] = {
19953 return invokers[argc];
19956invoke_bf(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const struct rb_builtin_function* bf, const VALUE *argv)
19958 const _Bool canary_p = reg_cfp->iseq->body->builtin_inline_p;
19959 if (canary_p) {} else {};
19960 VALUE ret = (*lookup_builtin_invoker(bf->argc))(ec, reg_cfp->self, argv, (rb_insn_func_t)bf->func_ptr);
19961 if (canary_p) {(void)(YARVINSN_invokebuiltin);};
19965vm_invoke_builtin(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function* bf, const VALUE *argv)
19967 return invoke_bf(ec, cfp, bf, argv);
19970vm_invoke_builtin_delegate(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function *bf, unsigned int start_index)
19973 fputs("vm_invoke_builtin_delegate: passing -> ", stderr);
19974 for (int i=0; i<bf->argc; i++) {
19975 ruby_debug_printf(":%s ", rb_id2name(cfp->iseq->body->local_table[i+start_index]));
19977 ruby_debug_printf("\n" "%s %s(%d):%p\n", __func__, bf->name, bf->argc, bf->func_ptr);
19979 if (bf->argc == 0) {
19980 return invoke_bf(ec, cfp, bf, ((void *)0));
19983 const VALUE *argv = cfp->ep - cfp->iseq->body->local_table_size - ( 3) + 1 + start_index;
19984 return invoke_bf(ec, cfp, bf, argv);
19988rb_vm_lvar_exposed(rb_execution_context_t *ec, int index)
19990 const rb_control_frame_t *cfp = ec->cfp;
19991 return cfp->ep[index];
19993struct local_var_list {
19996static inline VALUE method_missing(rb_execution_context_t *ec, VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status, int kw_splat);
19997static inline VALUE vm_yield_with_cref(rb_execution_context_t *ec, int argc, const VALUE *argv, int kw_splat, const rb_cref_t *cref, int is_lambda);
19998static inline VALUE vm_yield(rb_execution_context_t *ec, int argc, const VALUE *argv, int kw_splat);
19999static inline VALUE vm_yield_with_block(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE block_handler, int kw_splat);
20000static inline VALUE vm_yield_force_blockarg(rb_execution_context_t *ec, VALUE args);
20001VALUE rb_vm_exec(rb_execution_context_t *ec, _Bool mjit_enable_p);
20002static void vm_set_eval_stack(rb_execution_context_t * th, const rb_iseq_t *iseq, const rb_cref_t *cref, const struct rb_block *base_block);
20003static int vm_collect_local_variables_in_heap(const VALUE *dfp, const struct local_var_list *vars);
20004static VALUE rb_eUncaughtThrow;
20005static ID id_result, id_tag, id_value;
20006typedef enum call_type {
20014static VALUE send_internal(int argc, const VALUE *argv, VALUE recv, call_type scope);
20015static VALUE vm_call0_body(rb_execution_context_t* ec, struct rb_calling_info *calling, const VALUE *argv);
20017stack_check(rb_execution_context_t *ec)
20019 if (!(((ec)->raised_flag & (RAISED_STACKOVERFLOW)) != 0) &&
20020 rb_ec_stack_check(ec)) {
20021 ((ec)->raised_flag |= (RAISED_STACKOVERFLOW));
20022 rb_ec_stack_overflow(ec, 0);
20026raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj,
20027 enum method_missing_reason last_call_status)
20029 VALUE exc = rb_eNoMethodError;
20031 if ((__builtin_expect(!!(argc == 0), 0))) {
20032 rb_raise(rb_eArgError, "no method name given");
20034 else if ((__builtin_expect(!!(!RB_SYMBOL_P(argv[0])), 0))) {
20035 const VALUE e = rb_eArgError;
20036 rb_raise(e, "method name must be a Symbol but %""l""i" "\v"" is given",
20037 rb_obj_class(argv[0]));
20040 if (last_call_status & MISSING_PRIVATE) {
20041 format = rb_fstring_new(("private method `%s' called for %s%s%s"), (sizeof("private method `%s' called for %s%s%s" "") - 1));
20043 else if (last_call_status & MISSING_PROTECTED) {
20044 format = rb_fstring_new(("protected method `%s' called for %s%s%s"), (sizeof("protected method `%s' called for %s%s%s" "") - 1));
20046 else if (last_call_status & MISSING_VCALL) {
20047 format = rb_fstring_new(("undefined local variable or method `%s' for %s%s%s"), (sizeof("undefined local variable or method `%s' for %s%s%s" "") - 1));
20048 exc = rb_eNameError;
20050 else if (last_call_status & MISSING_SUPER) {
20051 format = rb_fstring_new(("super: no superclass method `%s' for %s%s%s"), (sizeof("super: no superclass method `%s' for %s%s%s" "") - 1));
20054 exc = rb_make_no_method_exception(exc, format, obj, argc, argv,
20055 last_call_status & (MISSING_FCALL|MISSING_VCALL));
20056 if (!(last_call_status & MISSING_MISSING)) {
20057 rb_vm_pop_cfunc_frame();
20063vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv,
20064 VALUE obj, int call_status)
20066 vm_passed_block_handler_set(ec, 0);
20067 raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING);
20070method_missing(rb_execution_context_t *ec, VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status, int kw_splat)
20072 VALUE *nargv, result, work, klass;
20073 VALUE block_handler = vm_passed_block_handler(ec);
20074 const rb_callable_method_entry_t *me;
20075 ec->method_missing_reason = call_status;
20076 if (id == idMethodMissing) {
20079 nargv = ((VALUE *) (((size_t)(argc + 1) < 1024 / sizeof(VALUE)) ? ((work) = 0, __builtin_alloca ((argc + 1) * sizeof(VALUE))) : rb_alloc_tmp_buffer2(&(work), (argc + 1), sizeof(VALUE))));
20080 nargv[0] = rb_id2sym(id);
20082 static const VALUE buf = ((VALUE)RUBY_Qfalse);
20086 ruby_nonempty_memcpy((nargv + 1), (argv), rbimpl_size_mul_or_raise(sizeof(VALUE), (argc)));
20089 klass = rb_class_of(obj);
20090 if (!klass) goto missing;
20091 me = rb_callable_method_entry(klass, idMethodMissing);
20092 if (!me || (int) (((me)->flags & (((VALUE)RUBY_FL_USER6) )) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+2))) goto missing;
20093 vm_passed_block_handler_set(ec, block_handler);
20094 result = rb_vm_call_kw(ec, obj, idMethodMissing, argc, argv, me, kw_splat);
20095 if (work) rb_free_tmp_buffer(&(work));
20098 raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING);
20099 __builtin_unreachable();
20101static rb_control_frame_t *
20102vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
20104 if (VM_FRAME_RUBYFRAME_P(cfp)) {
20105 return (rb_control_frame_t *)cfp;
20108 while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) {
20109 if (VM_FRAME_RUBYFRAME_P(cfp)) {
20110 return (rb_control_frame_t *)cfp;
20112 if (VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_PASSED) == 0) {
20120rb_vm_pop_cfunc_frame(void)
20122 rb_execution_context_t *ec = rb_current_execution_context(1);
20123 rb_control_frame_t *cfp = ec->cfp;
20124 const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(cfp);
20125 do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_ec_ractor_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, cfp->self, me->def->original_id, me->called_id, me->owner, ((VALUE)RUBY_Qnil), 0); } } while (0);
20126 do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0);
20127 vm_pop_frame(ec, cfp, cfp->ep);
20130vm_call_iseq_setup_normal_0start_0params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20133 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 0);
20136vm_call_iseq_setup_normal_0start_0params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20139 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 1);
20142vm_call_iseq_setup_normal_0start_0params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20145 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 2);
20148vm_call_iseq_setup_normal_0start_0params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20151 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 3);
20154vm_call_iseq_setup_normal_0start_0params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20157 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 4);
20160vm_call_iseq_setup_normal_0start_0params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20163 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 0, 5);
20166vm_call_iseq_setup_normal_0start_1params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20169 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 0);
20172vm_call_iseq_setup_normal_0start_1params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20175 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 1);
20178vm_call_iseq_setup_normal_0start_1params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20181 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 2);
20184vm_call_iseq_setup_normal_0start_1params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20187 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 3);
20190vm_call_iseq_setup_normal_0start_1params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20193 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 4);
20196vm_call_iseq_setup_normal_0start_1params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20199 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 1, 5);
20202vm_call_iseq_setup_normal_0start_2params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20205 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 0);
20208vm_call_iseq_setup_normal_0start_2params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20211 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 1);
20214vm_call_iseq_setup_normal_0start_2params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20217 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 2);
20220vm_call_iseq_setup_normal_0start_2params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20223 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 3);
20226vm_call_iseq_setup_normal_0start_2params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20229 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 4);
20232vm_call_iseq_setup_normal_0start_2params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20235 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 2, 5);
20238vm_call_iseq_setup_normal_0start_3params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20241 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 0);
20244vm_call_iseq_setup_normal_0start_3params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20247 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 1);
20250vm_call_iseq_setup_normal_0start_3params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20253 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 2);
20256vm_call_iseq_setup_normal_0start_3params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20259 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 3);
20262vm_call_iseq_setup_normal_0start_3params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20265 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 4);
20268vm_call_iseq_setup_normal_0start_3params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling)
20271 return vm_call_iseq_setup_normal(ec, cfp, calling, vm_cc_cme(calling->cc), 0, 3, 5);
20273static const vm_call_handler vm_call_iseq_handlers[][6] = {
20275 vm_call_iseq_setup_normal_0start_0params_0locals,
20276 vm_call_iseq_setup_normal_0start_0params_1locals,
20277 vm_call_iseq_setup_normal_0start_0params_2locals,
20278 vm_call_iseq_setup_normal_0start_0params_3locals,
20279 vm_call_iseq_setup_normal_0start_0params_4locals,
20280 vm_call_iseq_setup_normal_0start_0params_5locals,
20283 vm_call_iseq_setup_normal_0start_1params_0locals,
20284 vm_call_iseq_setup_normal_0start_1params_1locals,
20285 vm_call_iseq_setup_normal_0start_1params_2locals,
20286 vm_call_iseq_setup_normal_0start_1params_3locals,
20287 vm_call_iseq_setup_normal_0start_1params_4locals,
20288 vm_call_iseq_setup_normal_0start_1params_5locals,
20291 vm_call_iseq_setup_normal_0start_2params_0locals,
20292 vm_call_iseq_setup_normal_0start_2params_1locals,
20293 vm_call_iseq_setup_normal_0start_2params_2locals,
20294 vm_call_iseq_setup_normal_0start_2params_3locals,
20295 vm_call_iseq_setup_normal_0start_2params_4locals,
20296 vm_call_iseq_setup_normal_0start_2params_5locals,
20299 vm_call_iseq_setup_normal_0start_3params_0locals,
20300 vm_call_iseq_setup_normal_0start_3params_1locals,
20301 vm_call_iseq_setup_normal_0start_3params_2locals,
20302 vm_call_iseq_setup_normal_0start_3params_3locals,
20303 vm_call_iseq_setup_normal_0start_3params_4locals,
20304 vm_call_iseq_setup_normal_0start_3params_5locals,
20307static inline vm_call_handler
20308vm_call_iseq_setup_func(const struct rb_callinfo *ci, const int param_size, const int local_size)
20310 if ((__builtin_expect(!!(vm_ci_flag(ci) & (0x01 << VM_CALL_TAILCALL_bit)), 0))) {
20311 return &vm_call_iseq_setup_tailcall_0start;
20314 return &vm_call_iseq_setup_normal_0start;
20316 else if (param_size <= 3 && local_size <= 5) {
20318 return vm_call_iseq_handlers[param_size][local_size];
20321 return &vm_call_iseq_setup_normal_0start;
20324#define MJIT_HEADER 1
20325#define _FORTIFY_SOURCE 2
20326#define RUBY_EXPORT 1
20327#define _STDC_PREDEF_H 1
20328#define __STDC_IEC_559__ 1
20329#define __STDC_IEC_60559_BFP__ 201404L
20330#define __STDC_IEC_559_COMPLEX__ 1
20331#define __STDC_IEC_60559_COMPLEX__ 201404L
20332#define __STDC_ISO_10646__ 201706L
20333#define vm_exec rb_vm_exec
20334#define RUBY_EVAL_INTERN_H
20335#define RUBY_RUBY_H 1
20336#define RBIMPL_CONFIG_H
20337#define INCLUDE_RUBY_CONFIG_H 1
20338#define HAVE_STDIO_H 1
20339#define HAVE_STDLIB_H 1
20340#define HAVE_STRING_H 1
20341#define HAVE_INTTYPES_H 1
20342#define HAVE_STDINT_H 1
20343#define HAVE_STRINGS_H 1
20344#define HAVE_SYS_STAT_H 1
20345#define HAVE_SYS_TYPES_H 1
20346#define HAVE_UNISTD_H 1
20347#define HAVE_WCHAR_H 1
20348#define STDC_HEADERS 1
20349#define _ALL_SOURCE 1
20350#define _DARWIN_C_SOURCE 1
20351#define _GNU_SOURCE 1
20352#define _HPUX_ALT_XOPEN_SOCKET_API 1
20353#define _NETBSD_SOURCE 1
20354#define _OPENBSD_SOURCE 1
20355#define _POSIX_PTHREAD_SEMANTICS 1
20356#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
20357#define __STDC_WANT_IEC_60559_BFP_EXT__ 1
20358#define __STDC_WANT_IEC_60559_DFP_EXT__ 1
20359#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
20360#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
20361#define __STDC_WANT_LIB_EXT2__ 1
20362#define __STDC_WANT_MATH_SPEC_FUNCS__ 1
20363#define _TANDEM_SOURCE 1
20364#define __EXTENSIONS__ 1
20365#define RUBY_SYMBOL_EXPORT_BEGIN _Pragma("GCC visibility push(default)")
20366#define RUBY_SYMBOL_EXPORT_END _Pragma("GCC visibility pop")
20367#define HAVE_STMT_AND_DECL_IN_EXPR 1
20368#define HAVE_LIBCRYPT 1
20369#define HAVE_LIBDL 1
20370#define HAVE_LIBCAPSTONE 1
20371#define HAVE_DIRENT_H 1
20372#define HAVE__BOOL 1
20373#define HAVE_STDBOOL_H 1
20374#define HAVE_SYS_WAIT_H 1
20375#define HAVE_GRP_H 1
20376#define HAVE_FCNTL_H 1
20377#define HAVE_FLOAT_H 1
20378#define HAVE_LANGINFO_H 1
20379#define HAVE_LIMITS_H 1
20380#define HAVE_LOCALE_H 1
20381#define HAVE_MALLOC_H 1
20382#define HAVE_PWD_H 1
20383#define HAVE_SANITIZER_ASAN_INTERFACE_H 1
20384#define HAVE_STDALIGN_H 1
20385#define HAVE_SYS_EVENTFD_H 1
20386#define HAVE_SYS_FCNTL_H 1
20387#define HAVE_SYS_FILE_H 1
20388#define HAVE_SYS_IOCTL_H 1
20389#define HAVE_SYS_PARAM_H 1
20390#define HAVE_SYS_PRCTL_H 1
20391#define HAVE_SYS_RANDOM_H 1
20392#define HAVE_SYS_RESOURCE_H 1
20393#define HAVE_SYS_SELECT_H 1
20394#define HAVE_SYS_SENDFILE_H 1
20395#define HAVE_SYS_SOCKET_H 1
20396#define HAVE_SYS_SYSCALL_H 1
20397#define HAVE_SYS_SYSMACROS_H 1
20398#define HAVE_SYS_TIME_H 1
20399#define HAVE_SYS_TIMES_H 1
20400#define HAVE_SYS_UIO_H 1
20401#define HAVE_SYSCALL_H 1
20402#define HAVE_TIME_H 1
20403#define HAVE_UCONTEXT_H 1
20404#define HAVE_UTIME_H 1
20405#define HAVE_X86INTRIN_H 1
20406#define HAVE_X86INTRIN_H 1
20407#define HAVE_GMP_H 1
20408#define HAVE_LIBGMP 1
20409#define HAVE_TYPEOF 1
20410#define restrict __restrict__
20411#define HAVE_LONG_LONG 1
20412#define HAVE_OFF_T 1
20413#define SIZEOF_INT 4
20414#define SIZEOF_SHORT 2
20415#define SIZEOF_LONG 8
20416#define SIZEOF_LONG_LONG 8
20417#define SIZEOF___INT64 0
20418#define SIZEOF___INT128 16
20419#define SIZEOF_OFF_T 8
20420#define SIZEOF_VOIDP 8
20421#define SIZEOF_FLOAT 4
20422#define SIZEOF_DOUBLE 8
20423#define SIZEOF_TIME_T 8
20424#define SIZEOF_CLOCK_T 8
20425#define PACKED_STRUCT(x) x __attribute__((packed))
20426#define USE_UNALIGNED_MEMBER_ACCESS 1
20427#define PRI_LL_PREFIX "ll"
20428#define HAVE_PID_T 1
20429#define rb_pid_t pid_t
20430#define SIGNEDNESS_OF_PID_T -1
20431#define PIDT2NUM(v) INT2NUM(v)
20432#define NUM2PIDT(v) NUM2INT(v)
20433#define PRI_PIDT_PREFIX PRI_INT_PREFIX
20434#define HAVE_UID_T 1
20435#define rb_uid_t uid_t
20436#define SIGNEDNESS_OF_UID_T +1
20437#define UIDT2NUM(v) UINT2NUM(v)
20438#define NUM2UIDT(v) NUM2UINT(v)
20439#define PRI_UIDT_PREFIX PRI_INT_PREFIX
20440#define HAVE_GID_T 1
20441#define rb_gid_t gid_t
20442#define SIGNEDNESS_OF_GID_T +1
20443#define GIDT2NUM(v) UINT2NUM(v)
20444#define NUM2GIDT(v) NUM2UINT(v)
20445#define PRI_GIDT_PREFIX PRI_INT_PREFIX
20446#define HAVE_TIME_T 1
20447#define rb_time_t time_t
20448#define SIGNEDNESS_OF_TIME_T -1
20449#define TIMET2NUM(v) LONG2NUM(v)
20450#define NUM2TIMET(v) NUM2LONG(v)
20451#define PRI_TIMET_PREFIX PRI_LONG_PREFIX
20452#define HAVE_DEV_T 1
20453#define rb_dev_t dev_t
20454#define SIGNEDNESS_OF_DEV_T +1
20455#define DEVT2NUM(v) ULONG2NUM(v)
20456#define NUM2DEVT(v) NUM2ULONG(v)
20457#define PRI_DEVT_PREFIX PRI_LONG_PREFIX
20458#define HAVE_MODE_T 1
20459#define rb_mode_t mode_t
20460#define SIGNEDNESS_OF_MODE_T +1
20461#define MODET2NUM(v) UINT2NUM(v)
20462#define NUM2MODET(v) NUM2UINT(v)
20463#define PRI_MODET_PREFIX PRI_INT_PREFIX
20464#define HAVE_RLIM_T 1
20465#define rb_rlim_t rlim_t
20466#define SIGNEDNESS_OF_RLIM_T +1
20467#define RLIM2NUM(v) ULONG2NUM(v)
20468#define NUM2RLIM(v) NUM2ULONG(v)
20469#define PRI_RLIM_PREFIX PRI_LONG_PREFIX
20470#define HAVE_OFF_T 1
20471#define rb_off_t off_t
20472#define SIGNEDNESS_OF_OFF_T -1
20473#define OFFT2NUM(v) LONG2NUM(v)
20474#define NUM2OFFT(v) NUM2LONG(v)
20475#define PRI_OFFT_PREFIX PRI_LONG_PREFIX
20476#define HAVE_CLOCKID_T 1
20477#define rb_clockid_t clockid_t
20478#define SIGNEDNESS_OF_CLOCKID_T -1
20479#define CLOCKID2NUM(v) INT2NUM(v)
20480#define NUM2CLOCKID(v) NUM2INT(v)
20481#define PRI_CLOCKID_PREFIX PRI_INT_PREFIX
20482#define HAVE_VA_ARGS_MACRO 1
20483#define HAVE__ALIGNOF 1
20484#define CONSTFUNC(x) __attribute__ ((__const__)) x
20485#define PUREFUNC(x) __attribute__ ((__pure__)) x
20486#define NORETURN(x) __attribute__ ((__noreturn__)) x
20487#define DEPRECATED(x) __attribute__ ((__deprecated__)) x
20488#define DEPRECATED_BY(n,x) __attribute__ ((__deprecated__("by "#n))) x
20489#define NOINLINE(x) __attribute__ ((__noinline__)) x
20490#define NO_SANITIZE(san,x) __attribute__ ((__no_sanitize__(san))) x
20491#define NO_SANITIZE_ADDRESS(x) __attribute__ ((__no_sanitize_address__)) x
20492#define NO_ADDRESS_SAFETY_ANALYSIS(x) __attribute__ ((__no_address_safety_analysis__)) x
20493#define WARN_UNUSED_RESULT(x) __attribute__ ((__warn_unused_result__)) x
20494#define MAYBE_UNUSED(x) __attribute__ ((__unused__)) x
20495#define ERRORFUNC(mesg,x) __attribute__ ((__error__ mesg)) x
20496#define WARNINGFUNC(mesg,x) __attribute__ ((__warning__ mesg)) x
20497#define WEAK(x) __attribute__ ((__weak__)) x
20498#define HAVE_FUNC_WEAK 1
20499#define RUBY_CXX_DEPRECATED(msg) __attribute__((__deprecated__(msg)))
20500#define HAVE_NULLPTR 1
20501#define FUNC_UNOPTIMIZED(x) __attribute__ ((__optimize__("O0"))) x
20502#define FUNC_MINIMIZED(x) __attribute__ ((__optimize__("-Os","-fomit-frame-pointer"))) x
20503#define HAVE_ATTRIBUTE_FUNCTION_ALIAS 1
20504#define RUBY_ALIAS_FUNCTION_TYPE(type,prot,name,args) type prot __attribute__((alias(#name)));
20505#define RUBY_ALIAS_FUNCTION_VOID(prot,name,args) RUBY_ALIAS_FUNCTION_TYPE(void, prot, name, args)
20506#define HAVE_GCC_ATOMIC_BUILTINS 1
20507#define HAVE_GCC_SYNC_BUILTINS 1
20508#define UNREACHABLE __builtin_unreachable()
20509#define RUBY_FUNC_EXPORTED __attribute__ ((__visibility__("default"))) extern
20510#define RUBY_FUNC_NONNULL(n,x) __attribute__ ((__nonnull__(n))) x
20511#define RUBY_FUNCTION_NAME_STRING __func__
20512#define ENUM_OVER_INT 1
20513#define HAVE_DECL_SYS_NERR 0
20514#define HAVE_DECL_GETENV 1
20515#define SIZEOF_SIZE_T 8
20516#define SIZEOF_PTRDIFF_T 8
20517#define SIZEOF_DEV_T 8
20518#define PRI_SIZE_PREFIX "z"
20519#define PRI_PTRDIFF_PREFIX "t"
20520#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
20521#define HAVE_STRUCT_STAT_ST_BLOCKS 1
20522#define HAVE_STRUCT_STAT_ST_RDEV 1
20523#define SIZEOF_STRUCT_STAT_ST_SIZE SIZEOF_OFF_T
20524#define SIZEOF_STRUCT_STAT_ST_BLOCKS SIZEOF_OFF_T
20525#define SIZEOF_STRUCT_STAT_ST_INO SIZEOF_LONG
20526#define SIZEOF_STRUCT_STAT_ST_DEV SIZEOF_DEV_T
20527#define SIZEOF_STRUCT_STAT_ST_RDEV SIZEOF_DEV_T
20528#define HAVE_STRUCT_STAT_ST_ATIM 1
20529#define HAVE_STRUCT_STAT_ST_MTIM 1
20530#define HAVE_STRUCT_STAT_ST_CTIM 1
20531#define HAVE_STRUCT_STATX_STX_BTIME 1
20532#define HAVE_STRUCT_TIMEVAL 1
20533#define SIZEOF_STRUCT_TIMEVAL_TV_SEC SIZEOF_TIME_T
20534#define HAVE_STRUCT_TIMESPEC 1
20535#define HAVE_STRUCT_TIMEZONE 1
20536#define HAVE_RB_FD_INIT 1
20537#define HAVE_INT8_T 1
20538#define SIZEOF_INT8_T 1
20539#define HAVE_UINT8_T 1
20540#define SIZEOF_UINT8_T 1
20541#define HAVE_INT16_T 1
20542#define SIZEOF_INT16_T 2
20543#define HAVE_UINT16_T 1
20544#define SIZEOF_UINT16_T 2
20545#define HAVE_INT32_T 1
20546#define SIZEOF_INT32_T 4
20547#define HAVE_UINT32_T 1
20548#define SIZEOF_UINT32_T 4
20549#define HAVE_INT64_T 1
20550#define SIZEOF_INT64_T 8
20551#define HAVE_UINT64_T 1
20552#define SIZEOF_UINT64_T 8
20553#define HAVE_INT128_T 1
20554#define int128_t __int128
20555#define SIZEOF_INT128_T SIZEOF___INT128
20556#define HAVE_UINT128_T 1
20557#define uint128_t unsigned __int128
20558#define SIZEOF_UINT128_T SIZEOF___INT128
20559#define HAVE_INTPTR_T 1
20560#define SIZEOF_INTPTR_T 8
20561#define HAVE_UINTPTR_T 1
20562#define SIZEOF_UINTPTR_T 8
20563#define HAVE_SSIZE_T 1
20564#define SIZEOF_SSIZE_T 8
20565#define STACK_END_ADDRESS __libc_stack_end
20566#define GETGROUPS_T gid_t
20567#define HAVE_ALLOCA_H 1
20568#define HAVE_ALLOCA 1
20571#define HAVE_ACOSH 1
20573#define HAVE_CRYPT 1
20575#define HAVE_EXPLICIT_BZERO 1
20577#define HAVE_FLOCK 1
20578#define HAVE_HYPOT 1
20579#define HAVE_LGAMMA_R 1
20580#define HAVE_MEMMOVE 1
20582#define HAVE_NEXTAFTER 1
20583#define HAVE_STRCHR 1
20584#define HAVE_STRERROR 1
20585#define HAVE_STRSTR 1
20586#define HAVE_TGAMMA 1
20587#define HAVE_ISFINITE 1
20588#define SPT_TYPE SPT_REUSEARGV
20589#define HAVE_SIGNBIT 1
20591#define HAVE_VFORK 1
20592#define HAVE_WORKING_VFORK 1
20593#define HAVE_WORKING_FORK 1
20594#define HAVE__LONGJMP 1
20595#define HAVE_ATAN2L 1
20596#define HAVE_ATAN2F 1
20597#define HAVE_CHROOT 1
20598#define HAVE_CLOCK_GETTIME 1
20599#define HAVE_COPY_FILE_RANGE 1
20601#define HAVE_CRYPT_R 1
20602#define HAVE_DIRFD 1
20603#define HAVE_DL_ITERATE_PHDR 1
20604#define HAVE_DLOPEN 1
20605#define HAVE_DLADDR 1
20607#define HAVE_EACCESS 1
20608#define HAVE_ENDGRENT 1
20609#define HAVE_EVENTFD 1
20610#define HAVE_FCHMOD 1
20611#define HAVE_FCHOWN 1
20612#define HAVE_FCNTL 1
20613#define HAVE_FDATASYNC 1
20614#define HAVE_FDOPENDIR 1
20616#define HAVE_FSTATAT 1
20617#define HAVE_FSYNC 1
20618#define HAVE_FTRUNCATE 1
20619#define HAVE_FTRUNCATE64 1
20620#define HAVE_GETCWD 1
20621#define HAVE_GETENTROPY 1
20622#define HAVE_GETGRNAM 1
20623#define HAVE_GETGRNAM_R 1
20624#define HAVE_GETGROUPS 1
20625#define HAVE_GETLOGIN 1
20626#define HAVE_GETLOGIN_R 1
20627#define HAVE_GETPGID 1
20628#define HAVE_GETPGRP 1
20629#define HAVE_GETPRIORITY 1
20630#define HAVE_GETPWNAM 1
20631#define HAVE_GETPWNAM_R 1
20632#define HAVE_GETPWUID 1
20633#define HAVE_GETPWUID_R 1
20634#define HAVE_GETRANDOM 1
20635#define HAVE_GETRESGID 1
20636#define HAVE_GETRESUID 1
20637#define HAVE_GETRLIMIT 1
20638#define HAVE_GETSID 1
20639#define HAVE_GETTIMEOFDAY 1
20640#define HAVE_GMTIME_R 1
20641#define HAVE_GRANTPT 1
20642#define HAVE_INITGROUPS 1
20643#define HAVE_IOCTL 1
20644#define HAVE_KILLPG 1
20645#define HAVE_LCHMOD 1
20646#define HAVE_LCHOWN 1
20648#define HAVE_LLABS 1
20649#define HAVE_LOCKF 1
20651#define HAVE_LSTAT 1
20652#define HAVE_LUTIMES 1
20653#define HAVE_MALLOC_USABLE_SIZE 1
20654#define HAVE_MBLEN 1
20655#define HAVE_MEMALIGN 1
20656#define HAVE_WRITEV 1
20657#define HAVE_MEMRCHR 1
20658#define HAVE_MEMMEM 1
20659#define HAVE_MKFIFO 1
20660#define HAVE_MKNOD 1
20661#define HAVE_MKTIME 1
20663#define HAVE_OPENAT 1
20664#define HAVE_PIPE2 1
20666#define HAVE_POSIX_FADVISE 1
20667#define HAVE_POSIX_MEMALIGN 1
20668#define HAVE_PPOLL 1
20669#define HAVE_PREAD 1
20670#define HAVE_PWRITE 1
20671#define HAVE_QSORT_R 1
20672#define HAVE_READLINK 1
20673#define HAVE_REALPATH 1
20674#define HAVE_ROUND 1
20675#define HAVE_SCHED_GETAFFINITY 1
20676#define HAVE_SEEKDIR 1
20677#define HAVE_SENDFILE 1
20678#define HAVE_SETEGID 1
20679#define HAVE_SETENV 1
20680#define HAVE_SETEUID 1
20681#define HAVE_SETGID 1
20682#define HAVE_SETGROUPS 1
20683#define HAVE_SETPGID 1
20684#define HAVE_SETPGRP 1
20685#define HAVE_SETREGID 1
20686#define HAVE_SETRESGID 1
20687#define HAVE_SETRESUID 1
20688#define HAVE_SETREUID 1
20689#define HAVE_SETRLIMIT 1
20690#define HAVE_SETSID 1
20691#define HAVE_SETUID 1
20692#define HAVE_SHUTDOWN 1
20693#define HAVE_SIGACTION 1
20694#define HAVE_SIGALTSTACK 1
20695#define HAVE_SIGPROCMASK 1
20697#define HAVE_SYMLINK 1
20698#define HAVE_SYSCALL 1
20699#define HAVE_SYSCONF 1
20701#define HAVE_TELLDIR 1
20702#define HAVE_TIMEGM 1
20703#define HAVE_TIMES 1
20704#define HAVE_TRUNCATE 1
20705#define HAVE_TRUNCATE64 1
20706#define HAVE_UNSETENV 1
20707#define HAVE_UTIMENSAT 1
20708#define HAVE_UTIMES 1
20709#define HAVE_WAIT4 1
20710#define HAVE_WAITPID 1
20711#define HAVE_STATX 1
20712#define HAVE_CRYPT_H 1
20713#define HAVE_STRUCT_CRYPT_DATA_INITIALIZED 1
20714#define HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN 1
20715#define HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED 1
20716#define HAVE_BUILTIN___BUILTIN_BSWAP16 1
20717#define HAVE_BUILTIN___BUILTIN_BSWAP32 1
20718#define HAVE_BUILTIN___BUILTIN_BSWAP64 1
20719#define HAVE_BUILTIN___BUILTIN_POPCOUNT 1
20720#define HAVE_BUILTIN___BUILTIN_POPCOUNTLL 1
20721#define HAVE_BUILTIN___BUILTIN_CLZ 1
20722#define HAVE_BUILTIN___BUILTIN_CLZL 1
20723#define HAVE_BUILTIN___BUILTIN_CLZLL 1
20724#define HAVE_BUILTIN___BUILTIN_CTZ 1
20725#define HAVE_BUILTIN___BUILTIN_CTZLL 1
20726#define HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW 1
20727#define HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW 1
20728#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW 1
20729#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW_P 1
20730#define HAVE_BUILTIN___BUILTIN_CONSTANT_P 1
20731#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR 1
20732#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P 1
20733#define HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P 1
20734#define HAVE_BUILTIN___BUILTIN_TRAP 1
20735#define HAVE_BUILTIN___BUILTIN_EXPECT 1
20736#define HAVE_GNU_QSORT_R 1
20737#define ATAN2_INF_C99 1
20738#define HAVE_CLOCK_GETRES 1
20739#define HAVE_LIBRT 1
20740#define HAVE_LIBRT 1
20741#define HAVE_TIMER_CREATE 1
20742#define HAVE_TIMER_SETTIME 1
20743#define HAVE_STRUCT_TM_TM_ZONE 1
20744#define HAVE_TM_ZONE 1
20745#define HAVE_STRUCT_TM_TM_GMTOFF 1
20746#define HAVE_DAYLIGHT 1
20747#define NEGATIVE_TIME_T 1
20748#define POSIX_SIGNAL 1
20749#define HAVE_SIG_T 1
20750#define RSHIFT(x,y) ((x)>>(int)(y))
20751#define USE_COPY_FILE_RANGE 1
20752#define HAVE__SC_CLK_TCK 1
20753#define STACK_GROW_DIRECTION -1
20754#define COROUTINE_H "coroutine/amd64/Context.h"
20755#define _REENTRANT 1
20756#define _THREAD_SAFE 1
20757#define HAVE_LIBPTHREAD 1
20758#define HAVE_SCHED_YIELD 1
20759#define HAVE_PTHREAD_ATTR_SETINHERITSCHED 1
20760#define HAVE_PTHREAD_ATTR_GETSTACK 1
20761#define HAVE_PTHREAD_ATTR_GETGUARDSIZE 1
20762#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1
20763#define HAVE_PTHREAD_SETNAME_NP 1
20764#define HAVE_PTHREAD_SIGMASK 1
20765#define HAVE_PTHREAD_GETATTR_NP 1
20766#define SET_CURRENT_THREAD_NAME(name) pthread_setname_np(pthread_self(), name)
20767#define SET_ANOTHER_THREAD_NAME(thid,name) pthread_setname_np(thid, name)
20768#define DEFINE_MCONTEXT_PTR(mc,uc) mcontext_t *mc = &(uc)->uc_mcontext
20769#define HAVE_GETCONTEXT 1
20770#define HAVE_SETCONTEXT 1
20771#define HAVE_SYS_USER_H 1
20772#define HAVE_CONST_PAGE_SIZE 1
20773#define IOCTL_REQ_TYPE unsigned long
20774#define NUM2IOCTLREQ(num) NUM2ULONG(num)
20776#define HAVE_ELF_H 1
20778#define HAVE_BACKTRACE 1
20779#define HAVE_VALGRIND_MEMCHECK_H 1
20780#define DLEXT_MAXLEN 3
20782#define HAVE__SETJMP 1
20783#define RUBY_SETJMP(env) __builtin_setjmp((env))
20784#define RUBY_LONGJMP(env,val) __builtin_longjmp((env),val)
20786#define HAVE_PTHREAD_H 1
20787#define THREAD_IMPL_H "thread_pthread.h"
20788#define THREAD_IMPL_SRC "thread_pthread.c"
20789#define RUBY_PLATFORM "x86_64-linux"
20790#define RBIMPL_COMPILER_SINCE_H
20791#define RBIMPL_COMPILER_IS_H
20792#define RBIMPL_COMPILER_IS(cc) RBIMPL_COMPILER_IS_ ## cc
20793#define RBIMPL_COMPILER_IS_APPLE_H
20794#define RBIMPL_COMPILER_IS_Apple 0
20795#define RBIMPL_COMPILER_IS_CLANG_H
20796#define RBIMPL_COMPILER_IS_Clang 0
20797#define RBIMPL_COMPILER_IS_GCC_H
20798#define RBIMPL_COMPILER_IS_INTEL_H
20799#define RBIMPL_COMPILER_IS_Intel 0
20800#define RBIMPL_COMPILER_IS_GCC 1
20801#define RBIMPL_COMPILER_VERSION_MAJOR __GNUC__
20802#define RBIMPL_COMPILER_VERSION_MINOR __GNUC_MINOR__
20803#define RBIMPL_COMPILER_VERSION_PATCH __GNUC_PATCHLEVEL__
20804#define RBIMPL_COMPILER_IS_MSVC_H
20805#define RBIMPL_COMPILER_IS_MSVC 0
20806#define RBIMPL_COMPILER_IS_SUNPRO_H
20807#define RBIMPL_COMPILER_IS_SunPro 0
20808#define RBIMPL_COMPILER_SINCE(cc,x,y,z) (RBIMPL_COMPILER_IS(cc) && ((RBIMPL_COMPILER_VERSION_MAJOR > (x)) || ((RBIMPL_COMPILER_VERSION_MAJOR == (x)) && ((RBIMPL_COMPILER_VERSION_MINOR > (y)) || ((RBIMPL_COMPILER_VERSION_MINOR == (y)) && (RBIMPL_COMPILER_VERSION_PATCH >= (z)))))))
20809#define RBIMPL_COMPILER_BEFORE(cc,x,y,z) (RBIMPL_COMPILER_IS(cc) && ((RBIMPL_COMPILER_VERSION_MAJOR < (x)) || ((RBIMPL_COMPILER_VERSION_MAJOR == (x)) && ((RBIMPL_COMPILER_VERSION_MINOR < (y)) || ((RBIMPL_COMPILER_VERSION_MINOR == (y)) && (RBIMPL_COMPILER_VERSION_PATCH < (z)))))))
20810#undef HAVE_PROTOTYPES
20811#define HAVE_PROTOTYPES 1
20812#undef HAVE_STDARG_PROTOTYPES
20813#define HAVE_STDARG_PROTOTYPES 1
20815#define TOKEN_PASTE(x,y) x ##y
20816#define STRINGIZE(expr) STRINGIZE0(expr)
20817#define STRINGIZE0(expr) #expr
20818#define UNALIGNED_WORD_ACCESS 1
20819#define RBIMPL_TEST3(q,w,e,...) e
20820#define RBIMPL_TEST2(...) RBIMPL_TEST3(__VA_OPT__(,),1,0,0)
20821#define RBIMPL_TEST1() RBIMPL_TEST2("ruby")
20822#define HAVE___VA_OPT__
20826#define USE_RVARGC 0
20828#define _ANSI_STDARG_H_
20829#undef __need___va_list
20830#define __GNUC_VA_LIST
20831#define va_start(v,l) __builtin_va_start(v,l)
20832#define va_end(v) __builtin_va_end(v)
20833#define va_arg(v,l) __builtin_va_arg(v,l)
20834#define va_copy(d,s) __builtin_va_copy(d,s)
20835#define __va_copy(d,s) __builtin_va_copy(d,s)
20838#define _VA_LIST_DEFINED
20839#define _VA_LIST_T_H
20841#define RUBY_DEFINES_H 1
20843#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
20844#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
20845#define _FEATURES_H 1
20849#undef __USE_ISOCXX11
20852#undef __USE_POSIX199309
20853#undef __USE_POSIX199506
20855#undef __USE_XOPEN_EXTENDED
20857#undef __USE_XOPEN2K
20858#undef __USE_XOPEN2KXSI
20859#undef __USE_XOPEN2K8
20860#undef __USE_XOPEN2K8XSI
20861#undef __USE_LARGEFILE
20862#undef __USE_LARGEFILE64
20863#undef __USE_FILE_OFFSET64
20866#undef __USE_DYNAMIC_STACK_SIZE
20868#undef __USE_FORTIFY_LEVEL
20869#undef __KERNEL_STRICT_NAMES
20870#undef __GLIBC_USE_ISOC2X
20871#undef __GLIBC_USE_DEPRECATED_GETS
20872#undef __GLIBC_USE_DEPRECATED_SCANF
20873#define __KERNEL_STRICT_NAMES
20874#define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
20875#define __glibc_clang_prereq(maj,min) 0
20876#define __GLIBC_USE(F) __GLIBC_USE_ ## F
20877#undef _ISOC95_SOURCE
20878#define _ISOC95_SOURCE 1
20879#undef _ISOC99_SOURCE
20880#define _ISOC99_SOURCE 1
20881#undef _ISOC11_SOURCE
20882#define _ISOC11_SOURCE 1
20883#undef _ISOC2X_SOURCE
20884#define _ISOC2X_SOURCE 1
20885#undef _POSIX_SOURCE
20886#define _POSIX_SOURCE 1
20887#undef _POSIX_C_SOURCE
20888#define _POSIX_C_SOURCE 200809L
20889#undef _XOPEN_SOURCE
20890#define _XOPEN_SOURCE 700
20891#undef _XOPEN_SOURCE_EXTENDED
20892#define _XOPEN_SOURCE_EXTENDED 1
20893#undef _LARGEFILE64_SOURCE
20894#define _LARGEFILE64_SOURCE 1
20895#undef _DEFAULT_SOURCE
20896#define _DEFAULT_SOURCE 1
20897#undef _ATFILE_SOURCE
20898#define _ATFILE_SOURCE 1
20899#undef _DYNAMIC_STACK_SIZE_SOURCE
20900#define _DYNAMIC_STACK_SIZE_SOURCE 1
20901#undef _DEFAULT_SOURCE
20902#define _DEFAULT_SOURCE 1
20903#define __GLIBC_USE_ISOC2X 1
20904#define __USE_ISOC11 1
20905#define __USE_ISOC99 1
20906#define __USE_ISOC95 1
20907#undef _POSIX_SOURCE
20908#define _POSIX_SOURCE 1
20909#undef _POSIX_C_SOURCE
20910#define _POSIX_C_SOURCE 200809L
20911#define __USE_POSIX 1
20912#define __USE_POSIX2 1
20913#define __USE_POSIX199309 1
20914#define __USE_POSIX199506 1
20915#define __USE_XOPEN2K 1
20917#define __USE_ISOC95 1
20919#define __USE_ISOC99 1
20920#define __USE_XOPEN2K8 1
20921#undef _ATFILE_SOURCE
20922#define _ATFILE_SOURCE 1
20923#define __USE_XOPEN 1
20924#define __USE_XOPEN_EXTENDED 1
20925#define __USE_UNIX98 1
20926#undef _LARGEFILE_SOURCE
20927#define _LARGEFILE_SOURCE 1
20928#define __USE_XOPEN2K8 1
20929#define __USE_XOPEN2K8XSI 1
20930#define __USE_XOPEN2K 1
20931#define __USE_XOPEN2KXSI 1
20933#define __USE_ISOC95 1
20935#define __USE_ISOC99 1
20936#define __USE_LARGEFILE 1
20937#define __USE_LARGEFILE64 1
20938#define __WORDSIZE 64
20939#define __WORDSIZE_TIME64_COMPAT32 1
20940#define __SYSCALL_WORDSIZE 64
20941#define __WORDSIZE 64
20942#define __WORDSIZE_TIME64_COMPAT32 1
20943#define __SYSCALL_WORDSIZE 64
20944#define __TIMESIZE __WORDSIZE
20945#define __USE_MISC 1
20946#define __USE_ATFILE 1
20947#define __USE_DYNAMIC_STACK_SIZE 1
20949#define __USE_FORTIFY_LEVEL 2
20950#define __GLIBC_USE_DEPRECATED_GETS 0
20951#define __GLIBC_USE_DEPRECATED_SCANF 0
20952#undef __GNU_LIBRARY__
20953#define __GNU_LIBRARY__ 6
20955#define __GLIBC_MINOR__ 35
20956#define __GLIBC_PREREQ(maj,min) ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
20957#define _SYS_CDEFS_H 1
20960#define __glibc_has_attribute(attr) __has_attribute (attr)
20961#define __glibc_has_builtin(name) __has_builtin (name)
20962#define __glibc_has_extension(ext) 0
20963#define __LEAF , __leaf__
20964#define __LEAF_ATTR __attribute__ ((__leaf__))
20965#define __THROW __attribute__ ((__nothrow__ __LEAF))
20966#define __THROWNL __attribute__ ((__nothrow__))
20967#define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct
20968#define __NTHNL(fct) __attribute__ ((__nothrow__)) fct
20969#define __P(args) args
20970#define __PMT(args) args
20971#define __CONCAT(x,y) x ## y
20972#define __STRING(x) #x
20973#define __ptr_t void *
20974#define __BEGIN_DECLS
20976#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
20977#define __bos0(ptr) __builtin_object_size (ptr, 0)
20978#define __glibc_objsize0(__o) __bos0 (__o)
20979#define __glibc_objsize(__o) __bos (__o)
20980#define __glibc_safe_len_cond(__l,__s,__osz) ((__l) <= (__osz) / (__s))
20981#define __glibc_unsigned_or_positive(__l) ((__typeof (__l)) 0 < (__typeof (__l)) -1 || (__builtin_constant_p (__l) && (__l) > 0))
20982#define __glibc_safe_or_unknown_len(__l,__s,__osz) (__glibc_unsigned_or_positive (__l) && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz)) && __glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz))
20983#define __glibc_unsafe_len(__l,__s,__osz) (__glibc_unsigned_or_positive (__l) && __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz)) && !__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), __s, __osz))
20984#define __glibc_fortify(f,__l,__s,__osz,...) (__glibc_safe_or_unknown_len (__l, __s, __osz) ? __ ## f ## _alias (__VA_ARGS__) : (__glibc_unsafe_len (__l, __s, __osz) ? __ ## f ## _chk_warn (__VA_ARGS__, __osz) : __ ## f ## _chk (__VA_ARGS__, __osz)))
20985#define __glibc_fortify_n(f,__l,__s,__osz,...) (__glibc_safe_or_unknown_len (__l, __s, __osz) ? __ ## f ## _alias (__VA_ARGS__) : (__glibc_unsafe_len (__l, __s, __osz) ? __ ## f ## _chk_warn (__VA_ARGS__, (__osz) / (__s)) : __ ## f ## _chk (__VA_ARGS__, (__osz) / (__s))))
20986#define __warnattr(msg) __attribute__((__warning__ (msg)))
20987#define __errordecl(name,msg) extern void name (void) __attribute__((__error__ (msg)))
20988#define __flexarr []
20989#define __glibc_c99_flexarr_available 1
20990#define __REDIRECT(name,proto,alias) name proto __asm__ (__ASMNAME (#alias))
20991#define __REDIRECT_NTH(name,proto,alias) name proto __asm__ (__ASMNAME (#alias)) __THROW
20992#define __REDIRECT_NTHNL(name,proto,alias) name proto __asm__ (__ASMNAME (#alias)) __THROWNL
20993#define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
20994#define __ASMNAME2(prefix,cname) __STRING (prefix) cname
20995#define __attribute_malloc__ __attribute__ ((__malloc__))
20996#define __attribute_alloc_size__(params) __attribute__ ((__alloc_size__ params))
20997#define __attribute_alloc_align__(param) __attribute__ ((__alloc_align__ param))
20998#define __attribute_pure__ __attribute__ ((__pure__))
20999#define __attribute_const__ __attribute__ ((__const__))
21000#define __attribute_maybe_unused__ __attribute__ ((__unused__))
21001#define __attribute_used__ __attribute__ ((__used__))
21002#define __attribute_noinline__ __attribute__ ((__noinline__))
21003#define __attribute_deprecated__ __attribute__ ((__deprecated__))
21004#define __attribute_deprecated_msg__(msg) __attribute__ ((__deprecated__ (msg)))
21005#define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
21006#define __attribute_format_strfmon__(a,b) __attribute__ ((__format__ (__strfmon__, a, b)))
21007#define __attribute_nonnull__(params) __attribute__ ((__nonnull__ params))
21008#define __nonnull(params) __attribute_nonnull__ (params)
21009#define __returns_nonnull __attribute__ ((__returns_nonnull__))
21010#define __attribute_warn_unused_result__ __attribute__ ((__warn_unused_result__))
21011#define __wur __attribute_warn_unused_result__
21012#undef __always_inline
21013#define __always_inline __inline __attribute__ ((__always_inline__))
21014#define __attribute_artificial__ __attribute__ ((__artificial__))
21015#define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
21016#define __extern_always_inline extern __always_inline __attribute__ ((__gnu_inline__))
21017#define __fortify_function __extern_always_inline __attribute_artificial__
21018#define __va_arg_pack() __builtin_va_arg_pack ()
21019#define __va_arg_pack_len() __builtin_va_arg_pack_len ()
21020#define __restrict_arr __restrict
21021#define __glibc_unlikely(cond) __builtin_expect ((cond), 0)
21022#define __glibc_likely(cond) __builtin_expect ((cond), 1)
21023#define __attribute_nonstring__ __attribute__ ((__nonstring__))
21024#undef __attribute_copy__
21025#define __attribute_copy__(arg) __attribute__ ((__copy__ (arg)))
21026#define __WORDSIZE 64
21027#define __WORDSIZE_TIME64_COMPAT32 1
21028#define __SYSCALL_WORDSIZE 64
21029#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
21030#define __LDBL_REDIR1(name,proto,alias) name proto
21031#define __LDBL_REDIR(name,proto) name proto
21032#define __LDBL_REDIR1_NTH(name,proto,alias) name proto __THROW
21033#define __LDBL_REDIR_NTH(name,proto) name proto __THROW
21034#define __LDBL_REDIR2_DECL(name)
21035#define __LDBL_REDIR_DECL(name)
21036#define __REDIRECT_LDBL(name,proto,alias) __REDIRECT (name, proto, alias)
21037#define __REDIRECT_NTH_LDBL(name,proto,alias) __REDIRECT_NTH (name, proto, alias)
21038#define __glibc_macro_warning1(message) _Pragma (#message)
21039#define __glibc_macro_warning(message) __glibc_macro_warning1 (GCC warning message)
21040#define __HAVE_GENERIC_SELECTION 1
21041#define __attr_access(x) __attribute__ ((__access__ x))
21042#define __fortified_attr_access(a,o,s) __attr_access ((a, o, s))
21043#define __attr_access_none(argno) __attribute__ ((__access__ (__none__, argno)))
21044#define __attr_dealloc(dealloc,argno) __attribute__ ((__malloc__ (dealloc, argno)))
21045#define __attr_dealloc_free __attr_dealloc (__builtin_free, 1)
21046#define __attribute_returns_twice__ __attribute__ ((__returns_twice__))
21047#define __USE_EXTERN_INLINES 1
21048#define __stub___compat_bdflush
21049#define __stub_chflags
21050#define __stub_fchflags
21052#define __stub_revoke
21053#define __stub_setlogin
21054#define __stub_sigreturn
21056#undef __GLIBC_USE_LIB_EXT2
21057#define __GLIBC_USE_LIB_EXT2 1
21058#undef __GLIBC_USE_IEC_60559_BFP_EXT
21059#define __GLIBC_USE_IEC_60559_BFP_EXT 1
21060#undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X
21061#define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1
21062#undef __GLIBC_USE_IEC_60559_EXT
21063#define __GLIBC_USE_IEC_60559_EXT 1
21064#undef __GLIBC_USE_IEC_60559_FUNCS_EXT
21065#define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
21066#undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
21067#define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1
21068#undef __GLIBC_USE_IEC_60559_TYPES_EXT
21069#define __GLIBC_USE_IEC_60559_TYPES_EXT 1
21070#define __need_size_t
21075#define _SYS_SIZE_T_H
21080#define _BSD_SIZE_T_
21081#define _SIZE_T_DEFINED_
21082#define _SIZE_T_DEFINED
21083#define _BSD_SIZE_T_DEFINED_
21084#define _SIZE_T_DECLARED
21085#define ___int_size_t_h
21089#undef __need_size_t
21091#define NULL ((void *)0)
21093#define __need___va_list
21094#define _BITS_TYPES_H 1
21095#define __WORDSIZE 64
21096#define __WORDSIZE_TIME64_COMPAT32 1
21097#define __SYSCALL_WORDSIZE 64
21098#define __WORDSIZE 64
21099#define __WORDSIZE_TIME64_COMPAT32 1
21100#define __SYSCALL_WORDSIZE 64
21101#define __TIMESIZE __WORDSIZE
21102#define __S16_TYPE short int
21103#define __U16_TYPE unsigned short int
21104#define __S32_TYPE int
21105#define __U32_TYPE unsigned int
21106#define __SLONGWORD_TYPE long int
21107#define __ULONGWORD_TYPE unsigned long int
21108#define __SQUAD_TYPE long int
21109#define __UQUAD_TYPE unsigned long int
21110#define __SWORD_TYPE long int
21111#define __UWORD_TYPE unsigned long int
21112#define __SLONG32_TYPE int
21113#define __ULONG32_TYPE unsigned int
21114#define __S64_TYPE long int
21115#define __U64_TYPE unsigned long int
21116#define __STD_TYPE typedef
21117#define _BITS_TYPESIZES_H 1
21118#define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE
21119#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE
21120#define __DEV_T_TYPE __UQUAD_TYPE
21121#define __UID_T_TYPE __U32_TYPE
21122#define __GID_T_TYPE __U32_TYPE
21123#define __INO_T_TYPE __SYSCALL_ULONG_TYPE
21124#define __INO64_T_TYPE __UQUAD_TYPE
21125#define __MODE_T_TYPE __U32_TYPE
21126#define __NLINK_T_TYPE __SYSCALL_ULONG_TYPE
21127#define __FSWORD_T_TYPE __SYSCALL_SLONG_TYPE
21128#define __OFF_T_TYPE __SYSCALL_SLONG_TYPE
21129#define __OFF64_T_TYPE __SQUAD_TYPE
21130#define __PID_T_TYPE __S32_TYPE
21131#define __RLIM_T_TYPE __SYSCALL_ULONG_TYPE
21132#define __RLIM64_T_TYPE __UQUAD_TYPE
21133#define __BLKCNT_T_TYPE __SYSCALL_SLONG_TYPE
21134#define __BLKCNT64_T_TYPE __SQUAD_TYPE
21135#define __FSBLKCNT_T_TYPE __SYSCALL_ULONG_TYPE
21136#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
21137#define __FSFILCNT_T_TYPE __SYSCALL_ULONG_TYPE
21138#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
21139#define __ID_T_TYPE __U32_TYPE
21140#define __CLOCK_T_TYPE __SYSCALL_SLONG_TYPE
21141#define __TIME_T_TYPE __SYSCALL_SLONG_TYPE
21142#define __USECONDS_T_TYPE __U32_TYPE
21143#define __SUSECONDS_T_TYPE __SYSCALL_SLONG_TYPE
21144#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
21145#define __DADDR_T_TYPE __S32_TYPE
21146#define __KEY_T_TYPE __S32_TYPE
21147#define __CLOCKID_T_TYPE __S32_TYPE
21148#define __TIMER_T_TYPE void *
21149#define __BLKSIZE_T_TYPE __SYSCALL_SLONG_TYPE
21150#define __FSID_T_TYPE struct { int __val[2]; }
21151#define __SSIZE_T_TYPE __SWORD_TYPE
21152#define __CPU_MASK_TYPE __SYSCALL_ULONG_TYPE
21153#define __OFF_T_MATCHES_OFF64_T 1
21154#define __INO_T_MATCHES_INO64_T 1
21155#define __RLIM_T_MATCHES_RLIM64_T 1
21156#define __STATFS_MATCHES_STATFS64 1
21157#define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
21158#define __FD_SETSIZE 1024
21159#define _BITS_TIME64_H 1
21160#define __TIME64_T_TYPE __TIME_T_TYPE
21162#define _____fpos_t_defined 1
21163#define ____mbstate_t_defined 1
21164#define _____fpos64_t_defined 1
21165#define ____FILE_defined 1
21166#define __FILE_defined 1
21167#define __struct_FILE_defined 1
21168#define __getc_unlocked_body(_fp) (__glibc_unlikely ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end) ? __uflow (_fp) : *(unsigned char *) (_fp)->_IO_read_ptr++)
21169#define __putc_unlocked_body(_ch,_fp) (__glibc_unlikely ((_fp)->_IO_write_ptr >= (_fp)->_IO_write_end) ? __overflow (_fp, (unsigned char) (_ch)) : (unsigned char) (*(_fp)->_IO_write_ptr++ = (_ch)))
21170#define _IO_EOF_SEEN 0x0010
21171#define __feof_unlocked_body(_fp) (((_fp)->_flags & _IO_EOF_SEEN) != 0)
21172#define _IO_ERR_SEEN 0x0020
21173#define __ferror_unlocked_body(_fp) (((_fp)->_flags & _IO_ERR_SEEN) != 0)
21174#define _IO_USER_LOCK 0x8000
21175#define __cookie_io_functions_t_defined 1
21176#define __off_t_defined
21177#define __off64_t_defined
21178#define __ssize_t_defined
21189#define P_tmpdir "/tmp"
21190#define _BITS_STDIO_LIM_H 1
21192#define TMP_MAX 238328
21193#define FILENAME_MAX 4096
21197#define FOPEN_MAX 16
21198#define _PRINTF_NAN_LEN_MAX 4
21200#define stdout stdout
21201#define stderr stderr
21202#define RENAME_NOREPLACE (1 << 0)
21203#define RENAME_EXCHANGE (1 << 1)
21204#define RENAME_WHITEOUT (1 << 2)
21205#undef __attr_dealloc_fclose
21206#define __attr_dealloc_fclose __attr_dealloc (fclose, 1)
21207#define _BITS_FLOATN_H
21208#define __HAVE_FLOAT128 1
21209#define __HAVE_DISTINCT_FLOAT128 1
21210#define __HAVE_FLOAT64X 1
21211#define __HAVE_FLOAT64X_LONG_DOUBLE 1
21212#define __f128(x) x ##f128
21213#define __CFLOAT128 _Complex _Float128
21214#define _BITS_FLOATN_COMMON_H
21215#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
21216#define __HAVE_FLOAT16 0
21217#define __HAVE_FLOAT32 1
21218#define __HAVE_FLOAT64 1
21219#define __HAVE_FLOAT32X 1
21220#define __HAVE_FLOAT128X 0
21221#define __HAVE_DISTINCT_FLOAT16 __HAVE_FLOAT16
21222#define __HAVE_DISTINCT_FLOAT32 0
21223#define __HAVE_DISTINCT_FLOAT64 0
21224#define __HAVE_DISTINCT_FLOAT32X 0
21225#define __HAVE_DISTINCT_FLOAT64X 0
21226#define __HAVE_DISTINCT_FLOAT128X __HAVE_FLOAT128X
21227#define __HAVE_FLOAT128_UNLIKE_LDBL (__HAVE_DISTINCT_FLOAT128 && __LDBL_MANT_DIG__ != 113)
21228#define __HAVE_FLOATN_NOT_TYPEDEF 1
21229#define __f32(x) x ##f32
21230#define __f64(x) x ##f64
21231#define __f32x(x) x ##f32x
21232#define __f64x(x) x ##f64x
21233#define __CFLOAT32 _Complex _Float32
21234#define __CFLOAT64 _Complex _Float64
21235#define __CFLOAT32X _Complex _Float32x
21236#define __CFLOAT64X _Complex _Float64x
21237#define _BITS_STDIO_H 1
21238#define __STDIO_INLINE __extern_inline
21239#define fread_unlocked(ptr,size,n,stream) (__extension__ ((__builtin_constant_p (size) && __builtin_constant_p (n) && (size_t) (size) * (size_t) (n) <= 8 && (size_t) (size) != 0) ? ({ char *__ptr = (char *) (ptr); FILE *__stream = (stream); size_t __cnt; for (__cnt = (size_t) (size) * (size_t) (n); __cnt > 0; --__cnt) { int __c = getc_unlocked (__stream); if (__c == EOF) break; *__ptr++ = __c; } ((size_t) (size) * (size_t) (n) - __cnt) / (size_t) (size); }) : (((__builtin_constant_p (size) && (size_t) (size) == 0) || (__builtin_constant_p (n) && (size_t) (n) == 0)) ? ((void) (ptr), (void) (stream), (void) (size), (void) (n), (size_t) 0) : fread_unlocked (ptr, size, n, stream))))
21240#define fwrite_unlocked(ptr,size,n,stream) (__extension__ ((__builtin_constant_p (size) && __builtin_constant_p (n) && (size_t) (size) * (size_t) (n) <= 8 && (size_t) (size) != 0) ? ({ const char *__ptr = (const char *) (ptr); FILE *__stream = (stream); size_t __cnt; for (__cnt = (size_t) (size) * (size_t) (n); __cnt > 0; --__cnt) if (putc_unlocked (*__ptr++, __stream) == EOF) break; ((size_t) (size) * (size_t) (n) - __cnt) / (size_t) (size); }) : (((__builtin_constant_p (size) && (size_t) (size) == 0) || (__builtin_constant_p (n) && (size_t) (n) == 0)) ? ((void) (ptr), (void) (stream), (void) (size), (void) (n), (size_t) 0) : fwrite_unlocked (ptr, size, n, stream))))
21241#undef __STDIO_INLINE
21242#define _BITS_STDIO2_H 1
21243#undef fread_unlocked
21244#define _SYS_TYPES_H 1
21245#define __u_char_defined
21246#define __ino_t_defined
21247#define __ino64_t_defined
21248#define __dev_t_defined
21249#define __gid_t_defined
21250#define __mode_t_defined
21251#define __nlink_t_defined
21252#define __uid_t_defined
21253#define __pid_t_defined
21254#define __id_t_defined
21255#define __daddr_t_defined
21256#define __key_t_defined
21257#define __clock_t_defined 1
21258#define __clockid_t_defined 1
21259#define __time_t_defined 1
21260#define __timer_t_defined 1
21261#define __useconds_t_defined
21262#define __suseconds_t_defined
21263#define __need_size_t
21264#undef __need_size_t
21266#define _BITS_STDINT_INTN_H 1
21267#define __BIT_TYPES_DEFINED__ 1
21269#define _BITS_ENDIAN_H 1
21270#define __LITTLE_ENDIAN 1234
21271#define __BIG_ENDIAN 4321
21272#define __PDP_ENDIAN 3412
21273#define _BITS_ENDIANNESS_H 1
21274#define __BYTE_ORDER __LITTLE_ENDIAN
21275#define __FLOAT_WORD_ORDER __BYTE_ORDER
21276#define __LONG_LONG_PAIR(HI,LO) LO, HI
21277#define LITTLE_ENDIAN __LITTLE_ENDIAN
21278#define BIG_ENDIAN __BIG_ENDIAN
21279#define PDP_ENDIAN __PDP_ENDIAN
21280#define BYTE_ORDER __BYTE_ORDER
21281#define _BITS_BYTESWAP_H 1
21282#define __bswap_constant_16(x) ((__uint16_t) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
21283#define __bswap_constant_32(x) ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) | (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24))
21284#define __bswap_constant_64(x) ((((x) & 0xff00000000000000ull) >> 56) | (((x) & 0x00ff000000000000ull) >> 40) | (((x) & 0x0000ff0000000000ull) >> 24) | (((x) & 0x000000ff00000000ull) >> 8) | (((x) & 0x00000000ff000000ull) << 8) | (((x) & 0x0000000000ff0000ull) << 24) | (((x) & 0x000000000000ff00ull) << 40) | (((x) & 0x00000000000000ffull) << 56))
21285#define _BITS_UINTN_IDENTITY_H 1
21286#define htobe16(x) __bswap_16 (x)
21287#define htole16(x) __uint16_identity (x)
21288#define be16toh(x) __bswap_16 (x)
21289#define le16toh(x) __uint16_identity (x)
21290#define htobe32(x) __bswap_32 (x)
21291#define htole32(x) __uint32_identity (x)
21292#define be32toh(x) __bswap_32 (x)
21293#define le32toh(x) __uint32_identity (x)
21294#define htobe64(x) __bswap_64 (x)
21295#define htole64(x) __uint64_identity (x)
21296#define be64toh(x) __bswap_64 (x)
21297#define le64toh(x) __uint64_identity (x)
21298#define _SYS_SELECT_H 1
21299#define __FD_ZERO(s) do { unsigned int __i; fd_set *__arr = (s); for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) __FDS_BITS (__arr)[__i] = 0; } while (0)
21300#define __FD_SET(d,s) ((void) (__FDS_BITS (s)[__FD_ELT(d)] |= __FD_MASK(d)))
21301#define __FD_CLR(d,s) ((void) (__FDS_BITS (s)[__FD_ELT(d)] &= ~__FD_MASK(d)))
21302#define __FD_ISSET(d,s) ((__FDS_BITS (s)[__FD_ELT (d)] & __FD_MASK (d)) != 0)
21303#define __sigset_t_defined 1
21304#define ____sigset_t_defined
21305#define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
21306#define __timeval_defined 1
21307#define _STRUCT_TIMESPEC 1
21309#define __NFDBITS (8 * (int) sizeof (__fd_mask))
21310#define __FD_ELT(d) ((d) / __NFDBITS)
21311#define __FD_MASK(d) ((__fd_mask) (1UL << ((d) % __NFDBITS)))
21312#define __FDS_BITS(set) ((set)->fds_bits)
21313#define FD_SETSIZE __FD_SETSIZE
21314#define NFDBITS __NFDBITS
21315#define FD_SET(fd,fdsetp) __FD_SET (fd, fdsetp)
21316#define FD_CLR(fd,fdsetp) __FD_CLR (fd, fdsetp)
21317#define FD_ISSET(fd,fdsetp) __FD_ISSET (fd, fdsetp)
21318#define FD_ZERO(fdsetp) __FD_ZERO (fdsetp)
21320#define __FD_ELT(d) __extension__ ({ long int __d = (d); (__builtin_constant_p (__d) ? (0 <= __d && __d < __FD_SETSIZE ? (__d / __NFDBITS) : __fdelt_warn (__d)) : __fdelt_chk (__d)); })
21321#define __blksize_t_defined
21322#define __blkcnt_t_defined
21323#define __fsblkcnt_t_defined
21324#define __fsfilcnt_t_defined
21325#define _BITS_PTHREADTYPES_COMMON_H 1
21326#define _THREAD_SHARED_TYPES_H 1
21327#define _BITS_PTHREADTYPES_ARCH_H 1
21328#define __WORDSIZE 64
21329#define __WORDSIZE_TIME64_COMPAT32 1
21330#define __SYSCALL_WORDSIZE 64
21331#define __SIZEOF_PTHREAD_MUTEX_T 40
21332#define __SIZEOF_PTHREAD_ATTR_T 56
21333#define __SIZEOF_PTHREAD_RWLOCK_T 56
21334#define __SIZEOF_PTHREAD_BARRIER_T 32
21335#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
21336#define __SIZEOF_PTHREAD_COND_T 48
21337#define __SIZEOF_PTHREAD_CONDATTR_T 4
21338#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
21339#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
21340#define __LOCK_ALIGNMENT
21341#define __ONCE_ALIGNMENT
21342#define _BITS_ATOMIC_WIDE_COUNTER_H
21343#define _THREAD_MUTEX_INTERNAL_H 1
21344#define __PTHREAD_MUTEX_HAVE_PREV 1
21345#define __PTHREAD_MUTEX_INITIALIZER(__kind) 0, 0, 0, 0, __kind, 0, 0, { 0, 0 }
21346#define _RWLOCK_INTERNAL_H
21347#define __PTHREAD_RWLOCK_ELISION_EXTRA 0, { 0, 0, 0, 0, 0, 0, 0 }
21348#define __PTHREAD_RWLOCK_INITIALIZER(__flags) 0, 0, 0, 0, 0, 0, 0, 0, __PTHREAD_RWLOCK_ELISION_EXTRA, 0, __flags
21349#define __ONCE_FLAG_INIT { 0 }
21350#define __have_pthread_attr_t 1
21351#define _SYS_STAT_H 1
21352#define _BITS_STAT_H 1
21353#define _BITS_STRUCT_STAT_H 1
21354#define st_atime st_atim.tv_sec
21355#define st_mtime st_mtim.tv_sec
21356#define st_ctime st_ctim.tv_sec
21357#define _STATBUF_ST_BLKSIZE
21358#define _STATBUF_ST_RDEV
21359#define _STATBUF_ST_NSEC
21360#define __S_IFMT 0170000
21361#define __S_IFDIR 0040000
21362#define __S_IFCHR 0020000
21363#define __S_IFBLK 0060000
21364#define __S_IFREG 0100000
21365#define __S_IFIFO 0010000
21366#define __S_IFLNK 0120000
21367#define __S_IFSOCK 0140000
21368#define __S_TYPEISMQ(buf) ((buf)->st_mode - (buf)->st_mode)
21369#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
21370#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
21371#define __S_ISUID 04000
21372#define __S_ISGID 02000
21373#define __S_ISVTX 01000
21374#define __S_IREAD 0400
21375#define __S_IWRITE 0200
21376#define __S_IEXEC 0100
21377#define UTIME_NOW ((1l << 30) - 1l)
21378#define UTIME_OMIT ((1l << 30) - 2l)
21379#define S_IFMT __S_IFMT
21380#define S_IFDIR __S_IFDIR
21381#define S_IFCHR __S_IFCHR
21382#define S_IFBLK __S_IFBLK
21383#define S_IFREG __S_IFREG
21384#define S_IFIFO __S_IFIFO
21385#define S_IFLNK __S_IFLNK
21386#define S_IFSOCK __S_IFSOCK
21387#define __S_ISTYPE(mode,mask) (((mode) & __S_IFMT) == (mask))
21388#define S_ISDIR(mode) __S_ISTYPE((mode), __S_IFDIR)
21389#define S_ISCHR(mode) __S_ISTYPE((mode), __S_IFCHR)
21390#define S_ISBLK(mode) __S_ISTYPE((mode), __S_IFBLK)
21391#define S_ISREG(mode) __S_ISTYPE((mode), __S_IFREG)
21392#define S_ISFIFO(mode) __S_ISTYPE((mode), __S_IFIFO)
21393#define S_ISLNK(mode) __S_ISTYPE((mode), __S_IFLNK)
21394#define S_ISSOCK(mode) __S_ISTYPE((mode), __S_IFSOCK)
21395#define S_TYPEISMQ(buf) __S_TYPEISMQ(buf)
21396#define S_TYPEISSEM(buf) __S_TYPEISSEM(buf)
21397#define S_TYPEISSHM(buf) __S_TYPEISSHM(buf)
21398#define S_ISUID __S_ISUID
21399#define S_ISGID __S_ISGID
21400#define S_ISVTX __S_ISVTX
21401#define S_IRUSR __S_IREAD
21402#define S_IWUSR __S_IWRITE
21403#define S_IXUSR __S_IEXEC
21404#define S_IRWXU (__S_IREAD|__S_IWRITE|__S_IEXEC)
21405#define S_IREAD S_IRUSR
21406#define S_IWRITE S_IWUSR
21407#define S_IEXEC S_IXUSR
21408#define S_IRGRP (S_IRUSR >> 3)
21409#define S_IWGRP (S_IWUSR >> 3)
21410#define S_IXGRP (S_IXUSR >> 3)
21411#define S_IRWXG (S_IRWXU >> 3)
21412#define S_IROTH (S_IRGRP >> 3)
21413#define S_IWOTH (S_IWGRP >> 3)
21414#define S_IXOTH (S_IXGRP >> 3)
21415#define S_IRWXO (S_IRWXG >> 3)
21416#define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO)
21417#define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)
21418#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
21419#define S_BLKSIZE 512
21420#define _LINUX_STAT_H
21421#define _LINUX_TYPES_H
21422#define _ASM_GENERIC_TYPES_H
21423#define _ASM_GENERIC_INT_LL64_H
21424#define __ASM_X86_BITSPERLONG_H
21425#define __BITS_PER_LONG 64
21426#define __ASM_GENERIC_BITS_PER_LONG
21427#define _LINUX_POSIX_TYPES_H
21428#define __struct_group(TAG,NAME,ATTRS,MEMBERS...) union { struct { MEMBERS } ATTRS; struct TAG { MEMBERS } ATTRS NAME; }
21429#define __DECLARE_FLEX_ARRAY(TYPE,NAME) struct { struct { } __empty_ ## NAME; TYPE NAME[]; }
21431#define __FD_SETSIZE 1024
21432#define _ASM_X86_POSIX_TYPES_64_H
21433#define __kernel_old_uid_t __kernel_old_uid_t
21434#define __kernel_old_dev_t __kernel_old_dev_t
21435#define __ASM_GENERIC_POSIX_TYPES_H
21437#define __bitwise __bitwise__
21438#define __aligned_u64 __u64 __attribute__((aligned(8)))
21439#define __aligned_be64 __be64 __attribute__((aligned(8)))
21440#define __aligned_le64 __le64 __attribute__((aligned(8)))
21441#define STATX_TYPE 0x00000001U
21442#define STATX_MODE 0x00000002U
21443#define STATX_NLINK 0x00000004U
21444#define STATX_UID 0x00000008U
21445#define STATX_GID 0x00000010U
21446#define STATX_ATIME 0x00000020U
21447#define STATX_MTIME 0x00000040U
21448#define STATX_CTIME 0x00000080U
21449#define STATX_INO 0x00000100U
21450#define STATX_SIZE 0x00000200U
21451#define STATX_BLOCKS 0x00000400U
21452#define STATX_BASIC_STATS 0x000007ffU
21453#define STATX_BTIME 0x00000800U
21454#define STATX_MNT_ID 0x00001000U
21455#define STATX__RESERVED 0x80000000U
21456#define STATX_ALL 0x00000fffU
21457#define STATX_ATTR_COMPRESSED 0x00000004
21458#define STATX_ATTR_IMMUTABLE 0x00000010
21459#define STATX_ATTR_APPEND 0x00000020
21460#define STATX_ATTR_NODUMP 0x00000040
21461#define STATX_ATTR_ENCRYPTED 0x00000800
21462#define STATX_ATTR_AUTOMOUNT 0x00001000
21463#define STATX_ATTR_MOUNT_ROOT 0x00002000
21464#define STATX_ATTR_VERITY 0x00100000
21465#define STATX_ATTR_DAX 0x00200000
21466#define __statx_timestamp_defined 1
21467#define __statx_defined 1
21468#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
21469#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
21470#undef __GLIBC_USE_LIB_EXT2
21471#define __GLIBC_USE_LIB_EXT2 1
21472#undef __GLIBC_USE_IEC_60559_BFP_EXT
21473#define __GLIBC_USE_IEC_60559_BFP_EXT 1
21474#undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X
21475#define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1
21476#undef __GLIBC_USE_IEC_60559_EXT
21477#define __GLIBC_USE_IEC_60559_EXT 1
21478#undef __GLIBC_USE_IEC_60559_FUNCS_EXT
21479#define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
21480#undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
21481#define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1
21482#undef __GLIBC_USE_IEC_60559_TYPES_EXT
21483#define __GLIBC_USE_IEC_60559_TYPES_EXT 1
21484#define __need_size_t
21485#define __need_wchar_t
21487#undef __need_size_t
21495#define _BSD_WCHAR_T_
21496#define _WCHAR_T_DEFINED_
21497#define _WCHAR_T_DEFINED
21499#define ___int_wchar_t_h
21500#define __INT_WCHAR_T_H
21501#define _GCC_WCHAR_T
21502#define _WCHAR_T_DECLARED
21503#undef _BSD_WCHAR_T_
21504#undef __need_wchar_t
21506#define NULL ((void *)0)
21513#define WCONTINUED 8
21514#define WNOWAIT 0x01000000
21515#define __WNOTHREAD 0x20000000
21516#define __WALL 0x40000000
21517#define __WCLONE 0x80000000
21518#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
21519#define __WTERMSIG(status) ((status) & 0x7f)
21520#define __WSTOPSIG(status) __WEXITSTATUS(status)
21521#define __WIFEXITED(status) (__WTERMSIG(status) == 0)
21522#define __WIFSIGNALED(status) (((signed char) (((status) & 0x7f) + 1) >> 1) > 0)
21523#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
21524#define __WIFCONTINUED(status) ((status) == __W_CONTINUED)
21525#define __WCOREDUMP(status) ((status) & __WCOREFLAG)
21526#define __W_EXITCODE(ret,sig) ((ret) << 8 | (sig))
21527#define __W_STOPCODE(sig) ((sig) << 8 | 0x7f)
21528#define __W_CONTINUED 0xffff
21529#define __WCOREFLAG 0x80
21530#define WEXITSTATUS(status) __WEXITSTATUS (status)
21531#define WTERMSIG(status) __WTERMSIG (status)
21532#define WSTOPSIG(status) __WSTOPSIG (status)
21533#define WIFEXITED(status) __WIFEXITED (status)
21534#define WIFSIGNALED(status) __WIFSIGNALED (status)
21535#define WIFSTOPPED(status) __WIFSTOPPED (status)
21536#define WIFCONTINUED(status) __WIFCONTINUED (status)
21537#define __ldiv_t_defined 1
21538#define __lldiv_t_defined 1
21539#define RAND_MAX 2147483647
21540#define EXIT_FAILURE 1
21541#define EXIT_SUCCESS 0
21542#define MB_CUR_MAX (__ctype_get_mb_cur_max ())
21543#define _BITS_TYPES_LOCALE_T_H 1
21544#define _BITS_TYPES___LOCALE_T_H 1
21546#define __need_size_t
21547#undef __need_size_t
21550#define alloca(size) __builtin_alloca (size)
21551#define __COMPAR_FN_T
21552#pragma GCC diagnostic push
21553#pragma GCC diagnostic ignored "-Wcast-qual"
21554#pragma GCC diagnostic pop
21555#define __STDLIB_MB_LEN_MAX 16
21558#define _ANSI_STDDEF_H
21564#define _BSD_PTRDIFF_T_
21565#define ___int_ptrdiff_t_h
21566#define _GCC_PTRDIFF_T
21567#define _PTRDIFF_T_DECLARED
21568#undef __need_ptrdiff_t
21569#undef __need_size_t
21570#undef __need_wchar_t
21572#define NULL ((void *)0)
21574#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
21576#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
21577#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
21578#undef __GLIBC_USE_LIB_EXT2
21579#define __GLIBC_USE_LIB_EXT2 1
21580#undef __GLIBC_USE_IEC_60559_BFP_EXT
21581#define __GLIBC_USE_IEC_60559_BFP_EXT 1
21582#undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X
21583#define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1
21584#undef __GLIBC_USE_IEC_60559_EXT
21585#define __GLIBC_USE_IEC_60559_EXT 1
21586#undef __GLIBC_USE_IEC_60559_FUNCS_EXT
21587#define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
21588#undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
21589#define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1
21590#undef __GLIBC_USE_IEC_60559_TYPES_EXT
21591#define __GLIBC_USE_IEC_60559_TYPES_EXT 1
21592#define __need_size_t
21594#undef __need_ptrdiff_t
21595#undef __need_size_t
21596#undef __need_wchar_t
21598#define NULL ((void *)0)
21600#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
21601#define strdupa(s) (__extension__ ({ const char *__old = (s); size_t __len = strlen (__old) + 1; char *__new = (char *) __builtin_alloca (__len); (char *) memcpy (__new, __old, __len); }))
21602#define strndupa(s,n) (__extension__ ({ const char *__old = (s); size_t __len = strnlen (__old, (n)); char *__new = (char *) __builtin_alloca (__len + 1); __new[__len] = '\0'; (char *) memcpy (__new, __old, __len); }))
21603#define _STRINGS_H 1
21604#define __need_size_t
21605#undef __need_ptrdiff_t
21606#undef __need_size_t
21607#undef __need_wchar_t
21609#define NULL ((void *)0)
21611#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
21612#define __STRINGS_FORTIFIED 1
21613#define _BITS_STRING_FORTIFIED_H 1
21614#define _INTTYPES_H 1
21616#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
21617#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
21618#undef __GLIBC_USE_LIB_EXT2
21619#define __GLIBC_USE_LIB_EXT2 1
21620#undef __GLIBC_USE_IEC_60559_BFP_EXT
21621#define __GLIBC_USE_IEC_60559_BFP_EXT 1
21622#undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X
21623#define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1
21624#undef __GLIBC_USE_IEC_60559_EXT
21625#define __GLIBC_USE_IEC_60559_EXT 1
21626#undef __GLIBC_USE_IEC_60559_FUNCS_EXT
21627#define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
21628#undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
21629#define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1
21630#undef __GLIBC_USE_IEC_60559_TYPES_EXT
21631#define __GLIBC_USE_IEC_60559_TYPES_EXT 1
21632#define _BITS_WCHAR_H 1
21633#define __WCHAR_MAX __WCHAR_MAX__
21634#define __WCHAR_MIN __WCHAR_MIN__
21635#define __WORDSIZE 64
21636#define __WORDSIZE_TIME64_COMPAT32 1
21637#define __SYSCALL_WORDSIZE 64
21638#define _BITS_STDINT_UINTN_H 1
21639#define __intptr_t_defined
21640#define __INT64_C(c) c ## L
21641#define __UINT64_C(c) c ## UL
21642#define INT8_MIN (-128)
21643#define INT16_MIN (-32767-1)
21644#define INT32_MIN (-2147483647-1)
21645#define INT64_MIN (-__INT64_C(9223372036854775807)-1)
21646#define INT8_MAX (127)
21647#define INT16_MAX (32767)
21648#define INT32_MAX (2147483647)
21649#define INT64_MAX (__INT64_C(9223372036854775807))
21650#define UINT8_MAX (255)
21651#define UINT16_MAX (65535)
21652#define UINT32_MAX (4294967295U)
21653#define UINT64_MAX (__UINT64_C(18446744073709551615))
21654#define INT_LEAST8_MIN (-128)
21655#define INT_LEAST16_MIN (-32767-1)
21656#define INT_LEAST32_MIN (-2147483647-1)
21657#define INT_LEAST64_MIN (-__INT64_C(9223372036854775807)-1)
21658#define INT_LEAST8_MAX (127)
21659#define INT_LEAST16_MAX (32767)
21660#define INT_LEAST32_MAX (2147483647)
21661#define INT_LEAST64_MAX (__INT64_C(9223372036854775807))
21662#define UINT_LEAST8_MAX (255)
21663#define UINT_LEAST16_MAX (65535)
21664#define UINT_LEAST32_MAX (4294967295U)
21665#define UINT_LEAST64_MAX (__UINT64_C(18446744073709551615))
21666#define INT_FAST8_MIN (-128)
21667#define INT_FAST16_MIN (-9223372036854775807L-1)
21668#define INT_FAST32_MIN (-9223372036854775807L-1)
21669#define INT_FAST64_MIN (-__INT64_C(9223372036854775807)-1)
21670#define INT_FAST8_MAX (127)
21671#define INT_FAST16_MAX (9223372036854775807L)
21672#define INT_FAST32_MAX (9223372036854775807L)
21673#define INT_FAST64_MAX (__INT64_C(9223372036854775807))
21674#define UINT_FAST8_MAX (255)
21675#define UINT_FAST16_MAX (18446744073709551615UL)
21676#define UINT_FAST32_MAX (18446744073709551615UL)
21677#define UINT_FAST64_MAX (__UINT64_C(18446744073709551615))
21678#define INTPTR_MIN (-9223372036854775807L-1)
21679#define INTPTR_MAX (9223372036854775807L)
21680#define UINTPTR_MAX (18446744073709551615UL)
21681#define INTMAX_MIN (-__INT64_C(9223372036854775807)-1)
21682#define INTMAX_MAX (__INT64_C(9223372036854775807))
21683#define UINTMAX_MAX (__UINT64_C(18446744073709551615))
21684#define PTRDIFF_MIN (-9223372036854775807L-1)
21685#define PTRDIFF_MAX (9223372036854775807L)
21686#define SIG_ATOMIC_MIN (-2147483647-1)
21687#define SIG_ATOMIC_MAX (2147483647)
21688#define SIZE_MAX (18446744073709551615UL)
21689#define WCHAR_MIN __WCHAR_MIN
21690#define WCHAR_MAX __WCHAR_MAX
21691#define WINT_MIN (0u)
21692#define WINT_MAX (4294967295u)
21694#define INT16_C(c) c
21695#define INT32_C(c) c
21696#define INT64_C(c) c ## L
21697#define UINT8_C(c) c
21698#define UINT16_C(c) c
21699#define UINT32_C(c) c ## U
21700#define UINT64_C(c) c ## UL
21701#define INTMAX_C(c) c ## L
21702#define UINTMAX_C(c) c ## UL
21703#define INT8_WIDTH 8
21704#define UINT8_WIDTH 8
21705#define INT16_WIDTH 16
21706#define UINT16_WIDTH 16
21707#define INT32_WIDTH 32
21708#define UINT32_WIDTH 32
21709#define INT64_WIDTH 64
21710#define UINT64_WIDTH 64
21711#define INT_LEAST8_WIDTH 8
21712#define UINT_LEAST8_WIDTH 8
21713#define INT_LEAST16_WIDTH 16
21714#define UINT_LEAST16_WIDTH 16
21715#define INT_LEAST32_WIDTH 32
21716#define UINT_LEAST32_WIDTH 32
21717#define INT_LEAST64_WIDTH 64
21718#define UINT_LEAST64_WIDTH 64
21719#define INT_FAST8_WIDTH 8
21720#define UINT_FAST8_WIDTH 8
21721#define INT_FAST16_WIDTH __WORDSIZE
21722#define UINT_FAST16_WIDTH __WORDSIZE
21723#define INT_FAST32_WIDTH __WORDSIZE
21724#define UINT_FAST32_WIDTH __WORDSIZE
21725#define INT_FAST64_WIDTH 64
21726#define UINT_FAST64_WIDTH 64
21727#define INTPTR_WIDTH __WORDSIZE
21728#define UINTPTR_WIDTH __WORDSIZE
21729#define INTMAX_WIDTH 64
21730#define UINTMAX_WIDTH 64
21731#define PTRDIFF_WIDTH __WORDSIZE
21732#define SIG_ATOMIC_WIDTH 32
21733#define SIZE_WIDTH __WORDSIZE
21734#define WCHAR_WIDTH 32
21735#define WINT_WIDTH 32
21736#define _GCC_WRAP_STDINT_H
21737#define ____gwchar_t_defined 1
21738#define __PRI64_PREFIX "l"
21739#define __PRIPTR_PREFIX "l"
21743#define PRId64 __PRI64_PREFIX "d"
21744#define PRIdLEAST8 "d"
21745#define PRIdLEAST16 "d"
21746#define PRIdLEAST32 "d"
21747#define PRIdLEAST64 __PRI64_PREFIX "d"
21748#define PRIdFAST8 "d"
21749#define PRIdFAST16 __PRIPTR_PREFIX "d"
21750#define PRIdFAST32 __PRIPTR_PREFIX "d"
21751#define PRIdFAST64 __PRI64_PREFIX "d"
21755#define PRIi64 __PRI64_PREFIX "i"
21756#define PRIiLEAST8 "i"
21757#define PRIiLEAST16 "i"
21758#define PRIiLEAST32 "i"
21759#define PRIiLEAST64 __PRI64_PREFIX "i"
21760#define PRIiFAST8 "i"
21761#define PRIiFAST16 __PRIPTR_PREFIX "i"
21762#define PRIiFAST32 __PRIPTR_PREFIX "i"
21763#define PRIiFAST64 __PRI64_PREFIX "i"
21767#define PRIo64 __PRI64_PREFIX "o"
21768#define PRIoLEAST8 "o"
21769#define PRIoLEAST16 "o"
21770#define PRIoLEAST32 "o"
21771#define PRIoLEAST64 __PRI64_PREFIX "o"
21772#define PRIoFAST8 "o"
21773#define PRIoFAST16 __PRIPTR_PREFIX "o"
21774#define PRIoFAST32 __PRIPTR_PREFIX "o"
21775#define PRIoFAST64 __PRI64_PREFIX "o"
21779#define PRIu64 __PRI64_PREFIX "u"
21780#define PRIuLEAST8 "u"
21781#define PRIuLEAST16 "u"
21782#define PRIuLEAST32 "u"
21783#define PRIuLEAST64 __PRI64_PREFIX "u"
21784#define PRIuFAST8 "u"
21785#define PRIuFAST16 __PRIPTR_PREFIX "u"
21786#define PRIuFAST32 __PRIPTR_PREFIX "u"
21787#define PRIuFAST64 __PRI64_PREFIX "u"
21791#define PRIx64 __PRI64_PREFIX "x"
21792#define PRIxLEAST8 "x"
21793#define PRIxLEAST16 "x"
21794#define PRIxLEAST32 "x"
21795#define PRIxLEAST64 __PRI64_PREFIX "x"
21796#define PRIxFAST8 "x"
21797#define PRIxFAST16 __PRIPTR_PREFIX "x"
21798#define PRIxFAST32 __PRIPTR_PREFIX "x"
21799#define PRIxFAST64 __PRI64_PREFIX "x"
21803#define PRIX64 __PRI64_PREFIX "X"
21804#define PRIXLEAST8 "X"
21805#define PRIXLEAST16 "X"
21806#define PRIXLEAST32 "X"
21807#define PRIXLEAST64 __PRI64_PREFIX "X"
21808#define PRIXFAST8 "X"
21809#define PRIXFAST16 __PRIPTR_PREFIX "X"
21810#define PRIXFAST32 __PRIPTR_PREFIX "X"
21811#define PRIXFAST64 __PRI64_PREFIX "X"
21812#define PRIdMAX __PRI64_PREFIX "d"
21813#define PRIiMAX __PRI64_PREFIX "i"
21814#define PRIoMAX __PRI64_PREFIX "o"
21815#define PRIuMAX __PRI64_PREFIX "u"
21816#define PRIxMAX __PRI64_PREFIX "x"
21817#define PRIXMAX __PRI64_PREFIX "X"
21818#define PRIdPTR __PRIPTR_PREFIX "d"
21819#define PRIiPTR __PRIPTR_PREFIX "i"
21820#define PRIoPTR __PRIPTR_PREFIX "o"
21821#define PRIuPTR __PRIPTR_PREFIX "u"
21822#define PRIxPTR __PRIPTR_PREFIX "x"
21823#define PRIXPTR __PRIPTR_PREFIX "X"
21827#define SCNd64 __PRI64_PREFIX "d"
21828#define SCNdLEAST8 "hhd"
21829#define SCNdLEAST16 "hd"
21830#define SCNdLEAST32 "d"
21831#define SCNdLEAST64 __PRI64_PREFIX "d"
21832#define SCNdFAST8 "hhd"
21833#define SCNdFAST16 __PRIPTR_PREFIX "d"
21834#define SCNdFAST32 __PRIPTR_PREFIX "d"
21835#define SCNdFAST64 __PRI64_PREFIX "d"
21839#define SCNi64 __PRI64_PREFIX "i"
21840#define SCNiLEAST8 "hhi"
21841#define SCNiLEAST16 "hi"
21842#define SCNiLEAST32 "i"
21843#define SCNiLEAST64 __PRI64_PREFIX "i"
21844#define SCNiFAST8 "hhi"
21845#define SCNiFAST16 __PRIPTR_PREFIX "i"
21846#define SCNiFAST32 __PRIPTR_PREFIX "i"
21847#define SCNiFAST64 __PRI64_PREFIX "i"
21851#define SCNu64 __PRI64_PREFIX "u"
21852#define SCNuLEAST8 "hhu"
21853#define SCNuLEAST16 "hu"
21854#define SCNuLEAST32 "u"
21855#define SCNuLEAST64 __PRI64_PREFIX "u"
21856#define SCNuFAST8 "hhu"
21857#define SCNuFAST16 __PRIPTR_PREFIX "u"
21858#define SCNuFAST32 __PRIPTR_PREFIX "u"
21859#define SCNuFAST64 __PRI64_PREFIX "u"
21863#define SCNo64 __PRI64_PREFIX "o"
21864#define SCNoLEAST8 "hho"
21865#define SCNoLEAST16 "ho"
21866#define SCNoLEAST32 "o"
21867#define SCNoLEAST64 __PRI64_PREFIX "o"
21868#define SCNoFAST8 "hho"
21869#define SCNoFAST16 __PRIPTR_PREFIX "o"
21870#define SCNoFAST32 __PRIPTR_PREFIX "o"
21871#define SCNoFAST64 __PRI64_PREFIX "o"
21875#define SCNx64 __PRI64_PREFIX "x"
21876#define SCNxLEAST8 "hhx"
21877#define SCNxLEAST16 "hx"
21878#define SCNxLEAST32 "x"
21879#define SCNxLEAST64 __PRI64_PREFIX "x"
21880#define SCNxFAST8 "hhx"
21881#define SCNxFAST16 __PRIPTR_PREFIX "x"
21882#define SCNxFAST32 __PRIPTR_PREFIX "x"
21883#define SCNxFAST64 __PRI64_PREFIX "x"
21884#define SCNdMAX __PRI64_PREFIX "d"
21885#define SCNiMAX __PRI64_PREFIX "i"
21886#define SCNoMAX __PRI64_PREFIX "o"
21887#define SCNuMAX __PRI64_PREFIX "u"
21888#define SCNxMAX __PRI64_PREFIX "x"
21889#define SCNdPTR __PRIPTR_PREFIX "d"
21890#define SCNiPTR __PRIPTR_PREFIX "i"
21891#define SCNoPTR __PRIPTR_PREFIX "o"
21892#define SCNuPTR __PRIPTR_PREFIX "u"
21893#define SCNxPTR __PRIPTR_PREFIX "x"
21895#define alignas _Alignas
21896#define alignof _Alignof
21897#define __alignas_is_defined 1
21898#define __alignof_is_defined 1
21900#define _POSIX_VERSION 200809L
21901#define __POSIX2_THIS_VERSION 200809L
21902#define _POSIX2_VERSION __POSIX2_THIS_VERSION
21903#define _POSIX2_C_VERSION __POSIX2_THIS_VERSION
21904#define _POSIX2_C_BIND __POSIX2_THIS_VERSION
21905#define _POSIX2_C_DEV __POSIX2_THIS_VERSION
21906#define _POSIX2_SW_DEV __POSIX2_THIS_VERSION
21907#define _POSIX2_LOCALEDEF __POSIX2_THIS_VERSION
21908#define _XOPEN_VERSION 700
21909#define _XOPEN_XCU_VERSION 4
21910#define _XOPEN_XPG2 1
21911#define _XOPEN_XPG3 1
21912#define _XOPEN_XPG4 1
21913#define _XOPEN_UNIX 1
21914#define _XOPEN_ENH_I18N 1
21915#define _XOPEN_LEGACY 1
21916#define _BITS_POSIX_OPT_H 1
21917#define _POSIX_JOB_CONTROL 1
21918#define _POSIX_SAVED_IDS 1
21919#define _POSIX_PRIORITY_SCHEDULING 200809L
21920#define _POSIX_SYNCHRONIZED_IO 200809L
21921#define _POSIX_FSYNC 200809L
21922#define _POSIX_MAPPED_FILES 200809L
21923#define _POSIX_MEMLOCK 200809L
21924#define _POSIX_MEMLOCK_RANGE 200809L
21925#define _POSIX_MEMORY_PROTECTION 200809L
21926#define _POSIX_CHOWN_RESTRICTED 0
21927#define _POSIX_VDISABLE '\0'
21928#define _POSIX_NO_TRUNC 1
21929#define _XOPEN_REALTIME 1
21930#define _XOPEN_REALTIME_THREADS 1
21931#define _XOPEN_SHM 1
21932#define _POSIX_THREADS 200809L
21933#define _POSIX_REENTRANT_FUNCTIONS 1
21934#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L
21935#define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L
21936#define _POSIX_THREAD_ATTR_STACKSIZE 200809L
21937#define _POSIX_THREAD_ATTR_STACKADDR 200809L
21938#define _POSIX_THREAD_PRIO_INHERIT 200809L
21939#define _POSIX_THREAD_PRIO_PROTECT 200809L
21940#define _POSIX_THREAD_ROBUST_PRIO_INHERIT 200809L
21941#define _POSIX_THREAD_ROBUST_PRIO_PROTECT -1
21942#define _POSIX_SEMAPHORES 200809L
21943#define _POSIX_REALTIME_SIGNALS 200809L
21944#define _POSIX_ASYNCHRONOUS_IO 200809L
21945#define _POSIX_ASYNC_IO 1
21946#define _LFS_ASYNCHRONOUS_IO 1
21947#define _POSIX_PRIORITIZED_IO 200809L
21948#define _LFS64_ASYNCHRONOUS_IO 1
21949#define _LFS_LARGEFILE 1
21950#define _LFS64_LARGEFILE 1
21951#define _LFS64_STDIO 1
21952#define _POSIX_SHARED_MEMORY_OBJECTS 200809L
21953#define _POSIX_CPUTIME 0
21954#define _POSIX_THREAD_CPUTIME 0
21955#define _POSIX_REGEXP 1
21956#define _POSIX_READER_WRITER_LOCKS 200809L
21957#define _POSIX_SHELL 1
21958#define _POSIX_TIMEOUTS 200809L
21959#define _POSIX_SPIN_LOCKS 200809L
21960#define _POSIX_SPAWN 200809L
21961#define _POSIX_TIMERS 200809L
21962#define _POSIX_BARRIERS 200809L
21963#define _POSIX_MESSAGE_PASSING 200809L
21964#define _POSIX_THREAD_PROCESS_SHARED 200809L
21965#define _POSIX_MONOTONIC_CLOCK 0
21966#define _POSIX_CLOCK_SELECTION 200809L
21967#define _POSIX_ADVISORY_INFO 200809L
21968#define _POSIX_IPV6 200809L
21969#define _POSIX_RAW_SOCKETS 200809L
21970#define _POSIX2_CHAR_TERM 200809L
21971#define _POSIX_SPORADIC_SERVER -1
21972#define _POSIX_THREAD_SPORADIC_SERVER -1
21973#define _POSIX_TRACE -1
21974#define _POSIX_TRACE_EVENT_FILTER -1
21975#define _POSIX_TRACE_INHERIT -1
21976#define _POSIX_TRACE_LOG -1
21977#define _POSIX_TYPED_MEMORY_OBJECTS -1
21978#define __WORDSIZE 64
21979#define __WORDSIZE_TIME64_COMPAT32 1
21980#define __SYSCALL_WORDSIZE 64
21981#define _POSIX_V7_LPBIG_OFFBIG -1
21982#define _POSIX_V6_LPBIG_OFFBIG -1
21983#define _XBS5_LPBIG_OFFBIG -1
21984#define _POSIX_V7_LP64_OFF64 1
21985#define _POSIX_V6_LP64_OFF64 1
21986#define _XBS5_LP64_OFF64 1
21987#define __ILP32_OFF32_CFLAGS "-m32"
21988#define __ILP32_OFF32_LDFLAGS "-m32"
21989#define __ILP32_OFFBIG_CFLAGS "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
21990#define __ILP32_OFFBIG_LDFLAGS "-m32"
21991#define __LP64_OFF64_CFLAGS "-m64"
21992#define __LP64_OFF64_LDFLAGS "-m64"
21993#define STDIN_FILENO 0
21994#define STDOUT_FILENO 1
21995#define STDERR_FILENO 2
21996#define __need_size_t
21998#undef __need_ptrdiff_t
21999#undef __need_size_t
22000#undef __need_wchar_t
22002#define NULL ((void *)0)
22004#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
22005#define __socklen_t_defined
22010#define L_SET SEEK_SET
22011#define L_INCR SEEK_CUR
22012#define L_XTND SEEK_END
22013#define _PC_LINK_MAX _PC_LINK_MAX
22014#define _PC_MAX_CANON _PC_MAX_CANON
22015#define _PC_MAX_INPUT _PC_MAX_INPUT
22016#define _PC_NAME_MAX _PC_NAME_MAX
22017#define _PC_PATH_MAX _PC_PATH_MAX
22018#define _PC_PIPE_BUF _PC_PIPE_BUF
22019#define _PC_CHOWN_RESTRICTED _PC_CHOWN_RESTRICTED
22020#define _PC_NO_TRUNC _PC_NO_TRUNC
22021#define _PC_VDISABLE _PC_VDISABLE
22022#define _PC_SYNC_IO _PC_SYNC_IO
22023#define _PC_ASYNC_IO _PC_ASYNC_IO
22024#define _PC_PRIO_IO _PC_PRIO_IO
22025#define _PC_SOCK_MAXBUF _PC_SOCK_MAXBUF
22026#define _PC_FILESIZEBITS _PC_FILESIZEBITS
22027#define _PC_REC_INCR_XFER_SIZE _PC_REC_INCR_XFER_SIZE
22028#define _PC_REC_MAX_XFER_SIZE _PC_REC_MAX_XFER_SIZE
22029#define _PC_REC_MIN_XFER_SIZE _PC_REC_MIN_XFER_SIZE
22030#define _PC_REC_XFER_ALIGN _PC_REC_XFER_ALIGN
22031#define _PC_ALLOC_SIZE_MIN _PC_ALLOC_SIZE_MIN
22032#define _PC_SYMLINK_MAX _PC_SYMLINK_MAX
22033#define _PC_2_SYMLINKS _PC_2_SYMLINKS
22034#define _SC_ARG_MAX _SC_ARG_MAX
22035#define _SC_CHILD_MAX _SC_CHILD_MAX
22036#define _SC_CLK_TCK _SC_CLK_TCK
22037#define _SC_NGROUPS_MAX _SC_NGROUPS_MAX
22038#define _SC_OPEN_MAX _SC_OPEN_MAX
22039#define _SC_STREAM_MAX _SC_STREAM_MAX
22040#define _SC_TZNAME_MAX _SC_TZNAME_MAX
22041#define _SC_JOB_CONTROL _SC_JOB_CONTROL
22042#define _SC_SAVED_IDS _SC_SAVED_IDS
22043#define _SC_REALTIME_SIGNALS _SC_REALTIME_SIGNALS
22044#define _SC_PRIORITY_SCHEDULING _SC_PRIORITY_SCHEDULING
22045#define _SC_TIMERS _SC_TIMERS
22046#define _SC_ASYNCHRONOUS_IO _SC_ASYNCHRONOUS_IO
22047#define _SC_PRIORITIZED_IO _SC_PRIORITIZED_IO
22048#define _SC_SYNCHRONIZED_IO _SC_SYNCHRONIZED_IO
22049#define _SC_FSYNC _SC_FSYNC
22050#define _SC_MAPPED_FILES _SC_MAPPED_FILES
22051#define _SC_MEMLOCK _SC_MEMLOCK
22052#define _SC_MEMLOCK_RANGE _SC_MEMLOCK_RANGE
22053#define _SC_MEMORY_PROTECTION _SC_MEMORY_PROTECTION
22054#define _SC_MESSAGE_PASSING _SC_MESSAGE_PASSING
22055#define _SC_SEMAPHORES _SC_SEMAPHORES
22056#define _SC_SHARED_MEMORY_OBJECTS _SC_SHARED_MEMORY_OBJECTS
22057#define _SC_AIO_LISTIO_MAX _SC_AIO_LISTIO_MAX
22058#define _SC_AIO_MAX _SC_AIO_MAX
22059#define _SC_AIO_PRIO_DELTA_MAX _SC_AIO_PRIO_DELTA_MAX
22060#define _SC_DELAYTIMER_MAX _SC_DELAYTIMER_MAX
22061#define _SC_MQ_OPEN_MAX _SC_MQ_OPEN_MAX
22062#define _SC_MQ_PRIO_MAX _SC_MQ_PRIO_MAX
22063#define _SC_VERSION _SC_VERSION
22064#define _SC_PAGESIZE _SC_PAGESIZE
22065#define _SC_PAGE_SIZE _SC_PAGESIZE
22066#define _SC_RTSIG_MAX _SC_RTSIG_MAX
22067#define _SC_SEM_NSEMS_MAX _SC_SEM_NSEMS_MAX
22068#define _SC_SEM_VALUE_MAX _SC_SEM_VALUE_MAX
22069#define _SC_SIGQUEUE_MAX _SC_SIGQUEUE_MAX
22070#define _SC_TIMER_MAX _SC_TIMER_MAX
22071#define _SC_BC_BASE_MAX _SC_BC_BASE_MAX
22072#define _SC_BC_DIM_MAX _SC_BC_DIM_MAX
22073#define _SC_BC_SCALE_MAX _SC_BC_SCALE_MAX
22074#define _SC_BC_STRING_MAX _SC_BC_STRING_MAX
22075#define _SC_COLL_WEIGHTS_MAX _SC_COLL_WEIGHTS_MAX
22076#define _SC_EQUIV_CLASS_MAX _SC_EQUIV_CLASS_MAX
22077#define _SC_EXPR_NEST_MAX _SC_EXPR_NEST_MAX
22078#define _SC_LINE_MAX _SC_LINE_MAX
22079#define _SC_RE_DUP_MAX _SC_RE_DUP_MAX
22080#define _SC_CHARCLASS_NAME_MAX _SC_CHARCLASS_NAME_MAX
22081#define _SC_2_VERSION _SC_2_VERSION
22082#define _SC_2_C_BIND _SC_2_C_BIND
22083#define _SC_2_C_DEV _SC_2_C_DEV
22084#define _SC_2_FORT_DEV _SC_2_FORT_DEV
22085#define _SC_2_FORT_RUN _SC_2_FORT_RUN
22086#define _SC_2_SW_DEV _SC_2_SW_DEV
22087#define _SC_2_LOCALEDEF _SC_2_LOCALEDEF
22088#define _SC_PII _SC_PII
22089#define _SC_PII_XTI _SC_PII_XTI
22090#define _SC_PII_SOCKET _SC_PII_SOCKET
22091#define _SC_PII_INTERNET _SC_PII_INTERNET
22092#define _SC_PII_OSI _SC_PII_OSI
22093#define _SC_POLL _SC_POLL
22094#define _SC_SELECT _SC_SELECT
22095#define _SC_UIO_MAXIOV _SC_UIO_MAXIOV
22096#define _SC_IOV_MAX _SC_IOV_MAX
22097#define _SC_PII_INTERNET_STREAM _SC_PII_INTERNET_STREAM
22098#define _SC_PII_INTERNET_DGRAM _SC_PII_INTERNET_DGRAM
22099#define _SC_PII_OSI_COTS _SC_PII_OSI_COTS
22100#define _SC_PII_OSI_CLTS _SC_PII_OSI_CLTS
22101#define _SC_PII_OSI_M _SC_PII_OSI_M
22102#define _SC_T_IOV_MAX _SC_T_IOV_MAX
22103#define _SC_THREADS _SC_THREADS
22104#define _SC_THREAD_SAFE_FUNCTIONS _SC_THREAD_SAFE_FUNCTIONS
22105#define _SC_GETGR_R_SIZE_MAX _SC_GETGR_R_SIZE_MAX
22106#define _SC_GETPW_R_SIZE_MAX _SC_GETPW_R_SIZE_MAX
22107#define _SC_LOGIN_NAME_MAX _SC_LOGIN_NAME_MAX
22108#define _SC_TTY_NAME_MAX _SC_TTY_NAME_MAX
22109#define _SC_THREAD_DESTRUCTOR_ITERATIONS _SC_THREAD_DESTRUCTOR_ITERATIONS
22110#define _SC_THREAD_KEYS_MAX _SC_THREAD_KEYS_MAX
22111#define _SC_THREAD_STACK_MIN _SC_THREAD_STACK_MIN
22112#define _SC_THREAD_THREADS_MAX _SC_THREAD_THREADS_MAX
22113#define _SC_THREAD_ATTR_STACKADDR _SC_THREAD_ATTR_STACKADDR
22114#define _SC_THREAD_ATTR_STACKSIZE _SC_THREAD_ATTR_STACKSIZE
22115#define _SC_THREAD_PRIORITY_SCHEDULING _SC_THREAD_PRIORITY_SCHEDULING
22116#define _SC_THREAD_PRIO_INHERIT _SC_THREAD_PRIO_INHERIT
22117#define _SC_THREAD_PRIO_PROTECT _SC_THREAD_PRIO_PROTECT
22118#define _SC_THREAD_PROCESS_SHARED _SC_THREAD_PROCESS_SHARED
22119#define _SC_NPROCESSORS_CONF _SC_NPROCESSORS_CONF
22120#define _SC_NPROCESSORS_ONLN _SC_NPROCESSORS_ONLN
22121#define _SC_PHYS_PAGES _SC_PHYS_PAGES
22122#define _SC_AVPHYS_PAGES _SC_AVPHYS_PAGES
22123#define _SC_ATEXIT_MAX _SC_ATEXIT_MAX
22124#define _SC_PASS_MAX _SC_PASS_MAX
22125#define _SC_XOPEN_VERSION _SC_XOPEN_VERSION
22126#define _SC_XOPEN_XCU_VERSION _SC_XOPEN_XCU_VERSION
22127#define _SC_XOPEN_UNIX _SC_XOPEN_UNIX
22128#define _SC_XOPEN_CRYPT _SC_XOPEN_CRYPT
22129#define _SC_XOPEN_ENH_I18N _SC_XOPEN_ENH_I18N
22130#define _SC_XOPEN_SHM _SC_XOPEN_SHM
22131#define _SC_2_CHAR_TERM _SC_2_CHAR_TERM
22132#define _SC_2_C_VERSION _SC_2_C_VERSION
22133#define _SC_2_UPE _SC_2_UPE
22134#define _SC_XOPEN_XPG2 _SC_XOPEN_XPG2
22135#define _SC_XOPEN_XPG3 _SC_XOPEN_XPG3
22136#define _SC_XOPEN_XPG4 _SC_XOPEN_XPG4
22137#define _SC_CHAR_BIT _SC_CHAR_BIT
22138#define _SC_CHAR_MAX _SC_CHAR_MAX
22139#define _SC_CHAR_MIN _SC_CHAR_MIN
22140#define _SC_INT_MAX _SC_INT_MAX
22141#define _SC_INT_MIN _SC_INT_MIN
22142#define _SC_LONG_BIT _SC_LONG_BIT
22143#define _SC_WORD_BIT _SC_WORD_BIT
22144#define _SC_MB_LEN_MAX _SC_MB_LEN_MAX
22145#define _SC_NZERO _SC_NZERO
22146#define _SC_SSIZE_MAX _SC_SSIZE_MAX
22147#define _SC_SCHAR_MAX _SC_SCHAR_MAX
22148#define _SC_SCHAR_MIN _SC_SCHAR_MIN
22149#define _SC_SHRT_MAX _SC_SHRT_MAX
22150#define _SC_SHRT_MIN _SC_SHRT_MIN
22151#define _SC_UCHAR_MAX _SC_UCHAR_MAX
22152#define _SC_UINT_MAX _SC_UINT_MAX
22153#define _SC_ULONG_MAX _SC_ULONG_MAX
22154#define _SC_USHRT_MAX _SC_USHRT_MAX
22155#define _SC_NL_ARGMAX _SC_NL_ARGMAX
22156#define _SC_NL_LANGMAX _SC_NL_LANGMAX
22157#define _SC_NL_MSGMAX _SC_NL_MSGMAX
22158#define _SC_NL_NMAX _SC_NL_NMAX
22159#define _SC_NL_SETMAX _SC_NL_SETMAX
22160#define _SC_NL_TEXTMAX _SC_NL_TEXTMAX
22161#define _SC_XBS5_ILP32_OFF32 _SC_XBS5_ILP32_OFF32
22162#define _SC_XBS5_ILP32_OFFBIG _SC_XBS5_ILP32_OFFBIG
22163#define _SC_XBS5_LP64_OFF64 _SC_XBS5_LP64_OFF64
22164#define _SC_XBS5_LPBIG_OFFBIG _SC_XBS5_LPBIG_OFFBIG
22165#define _SC_XOPEN_LEGACY _SC_XOPEN_LEGACY
22166#define _SC_XOPEN_REALTIME _SC_XOPEN_REALTIME
22167#define _SC_XOPEN_REALTIME_THREADS _SC_XOPEN_REALTIME_THREADS
22168#define _SC_ADVISORY_INFO _SC_ADVISORY_INFO
22169#define _SC_BARRIERS _SC_BARRIERS
22170#define _SC_BASE _SC_BASE
22171#define _SC_C_LANG_SUPPORT _SC_C_LANG_SUPPORT
22172#define _SC_C_LANG_SUPPORT_R _SC_C_LANG_SUPPORT_R
22173#define _SC_CLOCK_SELECTION _SC_CLOCK_SELECTION
22174#define _SC_CPUTIME _SC_CPUTIME
22175#define _SC_THREAD_CPUTIME _SC_THREAD_CPUTIME
22176#define _SC_DEVICE_IO _SC_DEVICE_IO
22177#define _SC_DEVICE_SPECIFIC _SC_DEVICE_SPECIFIC
22178#define _SC_DEVICE_SPECIFIC_R _SC_DEVICE_SPECIFIC_R
22179#define _SC_FD_MGMT _SC_FD_MGMT
22180#define _SC_FIFO _SC_FIFO
22181#define _SC_PIPE _SC_PIPE
22182#define _SC_FILE_ATTRIBUTES _SC_FILE_ATTRIBUTES
22183#define _SC_FILE_LOCKING _SC_FILE_LOCKING
22184#define _SC_FILE_SYSTEM _SC_FILE_SYSTEM
22185#define _SC_MONOTONIC_CLOCK _SC_MONOTONIC_CLOCK
22186#define _SC_MULTI_PROCESS _SC_MULTI_PROCESS
22187#define _SC_SINGLE_PROCESS _SC_SINGLE_PROCESS
22188#define _SC_NETWORKING _SC_NETWORKING
22189#define _SC_READER_WRITER_LOCKS _SC_READER_WRITER_LOCKS
22190#define _SC_SPIN_LOCKS _SC_SPIN_LOCKS
22191#define _SC_REGEXP _SC_REGEXP
22192#define _SC_REGEX_VERSION _SC_REGEX_VERSION
22193#define _SC_SHELL _SC_SHELL
22194#define _SC_SIGNALS _SC_SIGNALS
22195#define _SC_SPAWN _SC_SPAWN
22196#define _SC_SPORADIC_SERVER _SC_SPORADIC_SERVER
22197#define _SC_THREAD_SPORADIC_SERVER _SC_THREAD_SPORADIC_SERVER
22198#define _SC_SYSTEM_DATABASE _SC_SYSTEM_DATABASE
22199#define _SC_SYSTEM_DATABASE_R _SC_SYSTEM_DATABASE_R
22200#define _SC_TIMEOUTS _SC_TIMEOUTS
22201#define _SC_TYPED_MEMORY_OBJECTS _SC_TYPED_MEMORY_OBJECTS
22202#define _SC_USER_GROUPS _SC_USER_GROUPS
22203#define _SC_USER_GROUPS_R _SC_USER_GROUPS_R
22204#define _SC_2_PBS _SC_2_PBS
22205#define _SC_2_PBS_ACCOUNTING _SC_2_PBS_ACCOUNTING
22206#define _SC_2_PBS_LOCATE _SC_2_PBS_LOCATE
22207#define _SC_2_PBS_MESSAGE _SC_2_PBS_MESSAGE
22208#define _SC_2_PBS_TRACK _SC_2_PBS_TRACK
22209#define _SC_SYMLOOP_MAX _SC_SYMLOOP_MAX
22210#define _SC_STREAMS _SC_STREAMS
22211#define _SC_2_PBS_CHECKPOINT _SC_2_PBS_CHECKPOINT
22212#define _SC_V6_ILP32_OFF32 _SC_V6_ILP32_OFF32
22213#define _SC_V6_ILP32_OFFBIG _SC_V6_ILP32_OFFBIG
22214#define _SC_V6_LP64_OFF64 _SC_V6_LP64_OFF64
22215#define _SC_V6_LPBIG_OFFBIG _SC_V6_LPBIG_OFFBIG
22216#define _SC_HOST_NAME_MAX _SC_HOST_NAME_MAX
22217#define _SC_TRACE _SC_TRACE
22218#define _SC_TRACE_EVENT_FILTER _SC_TRACE_EVENT_FILTER
22219#define _SC_TRACE_INHERIT _SC_TRACE_INHERIT
22220#define _SC_TRACE_LOG _SC_TRACE_LOG
22221#define _SC_LEVEL1_ICACHE_SIZE _SC_LEVEL1_ICACHE_SIZE
22222#define _SC_LEVEL1_ICACHE_ASSOC _SC_LEVEL1_ICACHE_ASSOC
22223#define _SC_LEVEL1_ICACHE_LINESIZE _SC_LEVEL1_ICACHE_LINESIZE
22224#define _SC_LEVEL1_DCACHE_SIZE _SC_LEVEL1_DCACHE_SIZE
22225#define _SC_LEVEL1_DCACHE_ASSOC _SC_LEVEL1_DCACHE_ASSOC
22226#define _SC_LEVEL1_DCACHE_LINESIZE _SC_LEVEL1_DCACHE_LINESIZE
22227#define _SC_LEVEL2_CACHE_SIZE _SC_LEVEL2_CACHE_SIZE
22228#define _SC_LEVEL2_CACHE_ASSOC _SC_LEVEL2_CACHE_ASSOC
22229#define _SC_LEVEL2_CACHE_LINESIZE _SC_LEVEL2_CACHE_LINESIZE
22230#define _SC_LEVEL3_CACHE_SIZE _SC_LEVEL3_CACHE_SIZE
22231#define _SC_LEVEL3_CACHE_ASSOC _SC_LEVEL3_CACHE_ASSOC
22232#define _SC_LEVEL3_CACHE_LINESIZE _SC_LEVEL3_CACHE_LINESIZE
22233#define _SC_LEVEL4_CACHE_SIZE _SC_LEVEL4_CACHE_SIZE
22234#define _SC_LEVEL4_CACHE_ASSOC _SC_LEVEL4_CACHE_ASSOC
22235#define _SC_LEVEL4_CACHE_LINESIZE _SC_LEVEL4_CACHE_LINESIZE
22236#define _SC_IPV6 _SC_IPV6
22237#define _SC_RAW_SOCKETS _SC_RAW_SOCKETS
22238#define _SC_V7_ILP32_OFF32 _SC_V7_ILP32_OFF32
22239#define _SC_V7_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG
22240#define _SC_V7_LP64_OFF64 _SC_V7_LP64_OFF64
22241#define _SC_V7_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG
22242#define _SC_SS_REPL_MAX _SC_SS_REPL_MAX
22243#define _SC_TRACE_EVENT_NAME_MAX _SC_TRACE_EVENT_NAME_MAX
22244#define _SC_TRACE_NAME_MAX _SC_TRACE_NAME_MAX
22245#define _SC_TRACE_SYS_MAX _SC_TRACE_SYS_MAX
22246#define _SC_TRACE_USER_EVENT_MAX _SC_TRACE_USER_EVENT_MAX
22247#define _SC_XOPEN_STREAMS _SC_XOPEN_STREAMS
22248#define _SC_THREAD_ROBUST_PRIO_INHERIT _SC_THREAD_ROBUST_PRIO_INHERIT
22249#define _SC_THREAD_ROBUST_PRIO_PROTECT _SC_THREAD_ROBUST_PRIO_PROTECT
22250#define _SC_MINSIGSTKSZ _SC_MINSIGSTKSZ
22251#define _SC_SIGSTKSZ _SC_SIGSTKSZ
22252#define _CS_PATH _CS_PATH
22253#define _CS_V6_WIDTH_RESTRICTED_ENVS _CS_V6_WIDTH_RESTRICTED_ENVS
22254#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS _CS_V6_WIDTH_RESTRICTED_ENVS
22255#define _CS_GNU_LIBC_VERSION _CS_GNU_LIBC_VERSION
22256#define _CS_GNU_LIBPTHREAD_VERSION _CS_GNU_LIBPTHREAD_VERSION
22257#define _CS_V5_WIDTH_RESTRICTED_ENVS _CS_V5_WIDTH_RESTRICTED_ENVS
22258#define _CS_POSIX_V5_WIDTH_RESTRICTED_ENVS _CS_V5_WIDTH_RESTRICTED_ENVS
22259#define _CS_V7_WIDTH_RESTRICTED_ENVS _CS_V7_WIDTH_RESTRICTED_ENVS
22260#define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS _CS_V7_WIDTH_RESTRICTED_ENVS
22261#define _CS_LFS_CFLAGS _CS_LFS_CFLAGS
22262#define _CS_LFS_LDFLAGS _CS_LFS_LDFLAGS
22263#define _CS_LFS_LIBS _CS_LFS_LIBS
22264#define _CS_LFS_LINTFLAGS _CS_LFS_LINTFLAGS
22265#define _CS_LFS64_CFLAGS _CS_LFS64_CFLAGS
22266#define _CS_LFS64_LDFLAGS _CS_LFS64_LDFLAGS
22267#define _CS_LFS64_LIBS _CS_LFS64_LIBS
22268#define _CS_LFS64_LINTFLAGS _CS_LFS64_LINTFLAGS
22269#define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_XBS5_ILP32_OFF32_CFLAGS
22270#define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_XBS5_ILP32_OFF32_LDFLAGS
22271#define _CS_XBS5_ILP32_OFF32_LIBS _CS_XBS5_ILP32_OFF32_LIBS
22272#define _CS_XBS5_ILP32_OFF32_LINTFLAGS _CS_XBS5_ILP32_OFF32_LINTFLAGS
22273#define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_XBS5_ILP32_OFFBIG_CFLAGS
22274#define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_XBS5_ILP32_OFFBIG_LDFLAGS
22275#define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_XBS5_ILP32_OFFBIG_LIBS
22276#define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
22277#define _CS_XBS5_LP64_OFF64_CFLAGS _CS_XBS5_LP64_OFF64_CFLAGS
22278#define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_XBS5_LP64_OFF64_LDFLAGS
22279#define _CS_XBS5_LP64_OFF64_LIBS _CS_XBS5_LP64_OFF64_LIBS
22280#define _CS_XBS5_LP64_OFF64_LINTFLAGS _CS_XBS5_LP64_OFF64_LINTFLAGS
22281#define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_XBS5_LPBIG_OFFBIG_CFLAGS
22282#define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
22283#define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_XBS5_LPBIG_OFFBIG_LIBS
22284#define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
22285#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V6_ILP32_OFF32_CFLAGS
22286#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
22287#define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V6_ILP32_OFF32_LIBS
22288#define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
22289#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
22290#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
22291#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V6_ILP32_OFFBIG_LIBS
22292#define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
22293#define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V6_LP64_OFF64_CFLAGS
22294#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V6_LP64_OFF64_LDFLAGS
22295#define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V6_LP64_OFF64_LIBS
22296#define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS _CS_POSIX_V6_LP64_OFF64_LINTFLAGS
22297#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
22298#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
22299#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
22300#define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
22301#define _CS_POSIX_V7_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS
22302#define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
22303#define _CS_POSIX_V7_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS
22304#define _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS
22305#define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
22306#define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
22307#define _CS_POSIX_V7_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS
22308#define _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS
22309#define _CS_POSIX_V7_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS
22310#define _CS_POSIX_V7_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS
22311#define _CS_POSIX_V7_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS
22312#define _CS_POSIX_V7_LP64_OFF64_LINTFLAGS _CS_POSIX_V7_LP64_OFF64_LINTFLAGS
22313#define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
22314#define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
22315#define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
22316#define _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS
22317#define _CS_V6_ENV _CS_V6_ENV
22318#define _CS_V7_ENV _CS_V7_ENV
22319#define _GETOPT_POSIX_H 1
22320#define _GETOPT_CORE_H 1
22325#define TEMP_FAILURE_RETRY(expression) (__extension__ ({ long int __result; do __result = (long int) (expression); while (__result == -1L && errno == EINTR); __result; }))
22326#define _LINUX_CLOSE_RANGE_H
22327#define CLOSE_RANGE_UNSHARE (1U << 1)
22328#define CLOSE_RANGE_CLOEXEC (1U << 2)
22329#define RBIMPL_DLLEXPORT_H
22331#define RUBY_EXTERN extern
22332#define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED
22333#define MJIT_SYMBOL_EXPORT_BEGIN RUBY_SYMBOL_EXPORT_BEGIN
22334#define MJIT_SYMBOL_EXPORT_END RUBY_SYMBOL_EXPORT_END
22335#define MJIT_STATIC static
22336#define RBIMPL_SYMBOL_EXPORT_BEGIN() RUBY_SYMBOL_EXPORT_BEGIN
22337#define RBIMPL_SYMBOL_EXPORT_END() RUBY_SYMBOL_EXPORT_END
22338#define RBIMPL_XMALLOC_H
22339#define RBIMPL_ATTR_ALLOC_SIZE_H
22340#define RBIMPL_HAS_ATTRIBUTE_H
22341#define RBIMPL_HAVE___HAS_ATTRIBUTE 1
22342#define RBIMPL_HAS_ATTRIBUTE(_) __has_attribute(_)
22343#define RBIMPL_ATTR_ALLOC_SIZE(tuple) __attribute__((__alloc_size__ tuple))
22344#define RBIMPL_ATTR_NODISCARD_H
22345#define RBIMPL_HAS_C_ATTRIBUTE_H
22346#define RBIMPL_HAS_C_ATTRIBUTE(_) __has_c_attribute(_)
22347#define RBIMPL_HAS_CPP_ATTRIBUTE_H
22348#define RBIMPL_HAS_CPP_ATTRIBUTE0(_) __has_cpp_attribute(_)
22349#define RBIMPL_HAS_CPP_ATTRIBUTE(_) 0
22350#define RBIMPL_ATTR_NODISCARD() [[nodiscard]]
22351#define RBIMPL_ATTR_NOEXCEPT_H
22352#define RBIMPL_HAS_FEATURE_H
22353#define RBIMPL_HAS_FEATURE(_) 0
22354#define RBIMPL_ATTR_NOEXCEPT(_)
22355#define RBIMPL_ATTR_RESTRICT_H
22356#define RBIMPL_ATTR_RESTRICT() __attribute__((__malloc__))
22357#define RBIMPL_ATTR_RETURNS_NONNULL_H
22358#define RBIMPL_ATTR_RETURNS_NONNULL() __attribute__((__returns_nonnull__))
22359#define USE_GC_MALLOC_OBJ_INFO_DETAILS 0
22360#define xmalloc ruby_xmalloc
22361#define xmalloc2 ruby_xmalloc2
22362#define xcalloc ruby_xcalloc
22363#define xrealloc ruby_xrealloc
22364#define xrealloc2 ruby_xrealloc2
22365#define xfree ruby_xfree
22366#pragma GCC visibility push(default)
22367#pragma GCC visibility pop
22368#define RUBY_BACKWARD2_ASSUME_H
22369#define RBIMPL_ASSUME_H
22370#define RBIMPL_CAST_H
22371#define RBIMPL_HAS_WARNING_H
22372#define RBIMPL_HAS_WARNING(_) 0
22373#define RBIMPL_WARNING_PUSH_H
22374#define RBIMPL_WARNING_PRAGMA0(x) _Pragma(#x)
22375#define RBIMPL_WARNING_PRAGMA1(x) RBIMPL_WARNING_PRAGMA0(GCC diagnostic x)
22376#define RBIMPL_WARNING_PRAGMA2(x,y) RBIMPL_WARNING_PRAGMA1(x #y)
22377#define RBIMPL_WARNING_PUSH() RBIMPL_WARNING_PRAGMA1(push)
22378#define RBIMPL_WARNING_POP() RBIMPL_WARNING_PRAGMA1(pop)
22379#define RBIMPL_WARNING_ERROR(flag) RBIMPL_WARNING_PRAGMA2(error, flag)
22380#define RBIMPL_WARNING_IGNORED(flag) RBIMPL_WARNING_PRAGMA2(ignored, flag)
22381#define RBIMPL_CAST(expr) (expr)
22382#define RBIMPL_HAS_BUILTIN_H
22383#define RBIMPL_HAVE___HAS_BUILTIN 1
22384#define RBIMPL_HAS_BUILTIN(_) __has_builtin(_)
22385#define RBIMPL_UNREACHABLE_RETURN(_) __builtin_unreachable()
22386#define RBIMPL_UNREACHABLE __builtin_unreachable
22387#define RBIMPL_ASSUME(_) (RB_LIKELY(!!(_)) ? RBIMPL_CAST((void)0) : RBIMPL_UNREACHABLE())
22390#define ASSUME RBIMPL_ASSUME
22391#define UNREACHABLE RBIMPL_UNREACHABLE()
22392#define UNREACHABLE_RETURN RBIMPL_UNREACHABLE_RETURN
22393#define RB_LIKELY(x) (__builtin_expect(!!(x), 1))
22394#define RB_UNLIKELY(x) (__builtin_expect(!!(x), 0))
22395#define RUBY_BACKWARD2_ATTRIBUTES_H
22396#define RBIMPL_ATTR_CONST_H
22397#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_H
22398#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE(_) (RBIMPL_HAS_DECLSPEC_ATTRIBUTE_ ## _)
22399#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_align RBIMPL_COMPILER_SINCE(MSVC, 8, 0, 0)
22400#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_deprecated RBIMPL_COMPILER_SINCE(MSVC,13, 0, 0)
22401#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_dllexport RBIMPL_COMPILER_SINCE(MSVC, 8, 0, 0)
22402#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_dllimport RBIMPL_COMPILER_SINCE(MSVC, 8, 0, 0)
22403#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_empty_bases RBIMPL_COMPILER_SINCE(MSVC,19, 0, 23918)
22404#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_noalias RBIMPL_COMPILER_SINCE(MSVC, 8, 0, 0)
22405#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_noinline RBIMPL_COMPILER_SINCE(MSVC,13, 0, 0)
22406#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_noreturn RBIMPL_COMPILER_SINCE(MSVC,11, 0, 0)
22407#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_nothrow RBIMPL_COMPILER_SINCE(MSVC, 8, 0, 0)
22408#define RBIMPL_HAS_DECLSPEC_ATTRIBUTE_restrict RBIMPL_COMPILER_SINCE(MSVC,14, 0, 0)
22409#undef RBIMPL_HAS_DECLSPEC_ATTRIBUTE_nothrow
22410#define RBIMPL_ATTR_CONST() __attribute__((__const__))
22411#define RBIMPL_ATTR_CONST_UNLESS_DEBUG() RBIMPL_ATTR_CONST()
22412#define RBIMPL_ATTR_DEPRECATED_H
22413#define RBIMPL_HAS_EXTENSION_H
22414#define RBIMPL_HAS_EXTENSION(_) RBIMPL_HAS_FEATURE(_)
22415#define RBIMPL_ATTR_DEPRECATED(msg) __attribute__((__deprecated__ msg))
22416#define RBIMPL_ATTR_DEPRECATED_EXT(msg)
22417#define RBIMPL_ATTR_ERROR_H
22418#define RBIMPL_ATTR_ERROR(msg) __attribute__((__error__ msg))
22419#define RBIMPL_ATTR_FORCEINLINE_H
22420#define RBIMPL_ATTR_FORCEINLINE() __attribute__((__always_inline__)) inline
22421#define RBIMPL_ATTR_FORMAT_H
22422#define RBIMPL_ATTR_FORMAT(x,y,z) __attribute__((__format__(x, y, z)))
22423#define RBIMPL_PRINTF_FORMAT __printf__
22424#define RBIMPL_ATTR_MAYBE_UNUSED_H
22425#define RBIMPL_ATTR_MAYBE_UNUSED() [[maybe_unused]]
22426#define RBIMPL_ATTR_NOINLINE_H
22427#define RBIMPL_ATTR_NOINLINE() __attribute__((__noinline__))
22428#define RBIMPL_ATTR_NONNULL_H
22429#define RBIMPL_ATTR_NONNULL(list) __attribute__((__nonnull__ list))
22430#define RBIMPL_NONNULL_ARG(arg) RBIMPL_ASSERT_NOTHING
22431#define RBIMPL_ATTR_NORETURN_H
22432#define RBIMPL_ATTR_NORETURN() __attribute__((__noreturn__))
22433#define RBIMPL_ATTR_PURE_H
22434#define RUBY_ASSERT_H
22435#define RBIMPL_RUBY_DEBUG 0
22436#define RBIMPL_NDEBUG 0
22440#define RUBY_DEBUG 0
22441#define RUBY_NDEBUG 1
22443#undef RBIMPL_NDEBUG
22444#undef RBIMPL_RUBY_DEBUG
22445#define RBIMPL_ASSERT_NOTHING RBIMPL_CAST((void)0)
22446#pragma GCC visibility push(default)
22447#pragma GCC visibility pop
22448#define RBIMPL_ASSERT_FUNC RUBY_FUNCTION_NAME_STRING
22449#define RUBY_ASSERT_FAIL(mesg) rb_assert_failure(__FILE__, __LINE__, RBIMPL_ASSERT_FUNC, mesg)
22450#define RUBY_ASSERT_MESG(expr,mesg) (RB_LIKELY(expr) ? RBIMPL_ASSERT_NOTHING : RUBY_ASSERT_FAIL(mesg))
22451#define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG((expr), #expr)
22452#define RUBY_ASSERT(expr) RBIMPL_ASSERT_NOTHING
22453#define RUBY_ASSERT_NDEBUG(expr) RBIMPL_ASSERT_NOTHING
22454#define RUBY_ASSERT_MESG_WHEN(cond,expr,mesg) ((cond) ? RUBY_ASSERT_MESG((expr), (mesg)) : RBIMPL_ASSERT_NOTHING)
22455#define RUBY_ASSERT_WHEN(cond,expr) RUBY_ASSERT_MESG_WHEN((cond), (expr), #expr)
22456#define RBIMPL_ASSERT_OR_ASSUME(expr) RBIMPL_ASSERT_NOTHING
22457#define RBIMPL_ATTR_PURE() __attribute__((__pure__))
22458#define RBIMPL_ATTR_PURE_UNLESS_DEBUG() RBIMPL_ATTR_PURE()
22459#define RBIMPL_ATTR_WARNING_H
22460#define RBIMPL_ATTR_WARNING(msg) __attribute__((__warning__ msg))
22462#define CONSTFUNC(x) RBIMPL_ATTR_CONST() x
22464#define PUREFUNC(x) RBIMPL_ATTR_PURE() x
22466#define DEPRECATED(x) RBIMPL_ATTR_DEPRECATED(("")) x
22467#undef DEPRECATED_BY
22468#define DEPRECATED_BY(n,x) RBIMPL_ATTR_DEPRECATED(("by: " #n)) x
22469#undef DEPRECATED_TYPE
22470#define DEPRECATED_TYPE(mesg,decl) _Pragma("message \"DEPRECATED_TYPE is deprecated\""); decl RBIMPL_ATTR_DEPRECATED(mseg)
22471#undef RUBY_CXX_DEPRECATED
22472#define RUBY_CXX_DEPRECATED(mseg) RBIMPL_ATTR_DEPRECATED((mseg))
22474#define NOINLINE(x) RBIMPL_ATTR_NOINLINE() x
22476#define ERRORFUNC(mesg,x) RBIMPL_ATTR_ERROR(mesg) x
22477#define HAVE_ATTRIBUTE_ERRORFUNC 1
22479#define WARNINGFUNC(mesg,x) RBIMPL_ATTR_WARNING(mesg) x
22480#define HAVE_ATTRIBUTE_WARNINGFUNC 1
22482#define PRINTF_ARGS(decl,string_index,first_to_check) RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, (string_index), (first_to_check)) decl
22483#undef RUBY_ATTR_ALLOC_SIZE
22484#define RUBY_ATTR_ALLOC_SIZE RBIMPL_ATTR_ALLOC_SIZE
22485#undef RUBY_ATTR_MALLOC
22486#define RUBY_ATTR_MALLOC RBIMPL_ATTR_RESTRICT()
22487#undef RUBY_ATTR_RETURNS_NONNULL
22488#define RUBY_ATTR_RETURNS_NONNULL RBIMPL_ATTR_RETURNS_NONNULL()
22489#define RUBY_ALIAS_FUNCTION(prot,name,args) RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args)
22490#undef RUBY_FUNC_NONNULL
22491#define RUBY_FUNC_NONNULL(n,x) RBIMPL_ATTR_NONNULL(n) x
22493#define NORETURN(x) RBIMPL_ATTR_NORETURN() x
22494#define NORETURN_STYLE_NEW
22495#define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x)
22496#undef RB_UNUSED_VAR
22497#define RB_UNUSED_VAR(x) x RBIMPL_ATTR_MAYBE_UNUSED()
22498#define RUBY_BACKWARD2_BOOL_H
22499#define RBIMPL_STDBOOL_H
22504#define __bool_true_false_are_defined 1
22507#define RUBY_BACKWARD2_LONG_LONG_H
22508#define HAVE_TRUE_LONG_LONG 1
22509#define LONG_LONG long long
22510#define RUBY_BACKWARD2_STDALIGN_H
22511#define RBIMPL_STDALIGN_H
22512#define RBIMPL_ALIGNAS(_) __attribute__((__aligned__(_)))
22513#define RBIMPL_ALIGNOF(T) RB_GNUC_EXTENSION(_Alignof(T))
22516#define RUBY_ALIGNAS RBIMPL_ALIGNAS
22517#define RUBY_ALIGNOF RBIMPL_ALIGNOF
22518#define RUBY_BACKWARD2_STDARG_H
22520#define _(args) args
22522#define __(args) args
22524#define RBIMPL_DOSISH_H
22525#define PATH_SEP ":"
22526#define PATH_SEP_CHAR PATH_SEP[0]
22527#define PATH_ENV "PATH"
22528#define CASEFOLD_FILESYSTEM 0
22529#define RUBY_MISSING_H 1
22531#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
22532#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
22533#undef __GLIBC_USE_LIB_EXT2
22534#define __GLIBC_USE_LIB_EXT2 1
22535#undef __GLIBC_USE_IEC_60559_BFP_EXT
22536#define __GLIBC_USE_IEC_60559_BFP_EXT 1
22537#undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X
22538#define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1
22539#undef __GLIBC_USE_IEC_60559_EXT
22540#define __GLIBC_USE_IEC_60559_EXT 1
22541#undef __GLIBC_USE_IEC_60559_FUNCS_EXT
22542#define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
22543#undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
22544#define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1
22545#undef __GLIBC_USE_IEC_60559_TYPES_EXT
22546#define __GLIBC_USE_IEC_60559_TYPES_EXT 1
22547#define _BITS_LIBM_SIMD_DECL_STUBS_H 1
22548#define __DECL_SIMD_cos
22549#define __DECL_SIMD_cosf
22550#define __DECL_SIMD_cosl
22551#define __DECL_SIMD_cosf16
22552#define __DECL_SIMD_cosf32
22553#define __DECL_SIMD_cosf64
22554#define __DECL_SIMD_cosf128
22555#define __DECL_SIMD_cosf32x
22556#define __DECL_SIMD_cosf64x
22557#define __DECL_SIMD_cosf128x
22558#define __DECL_SIMD_sin
22559#define __DECL_SIMD_sinf
22560#define __DECL_SIMD_sinl
22561#define __DECL_SIMD_sinf16
22562#define __DECL_SIMD_sinf32
22563#define __DECL_SIMD_sinf64
22564#define __DECL_SIMD_sinf128
22565#define __DECL_SIMD_sinf32x
22566#define __DECL_SIMD_sinf64x
22567#define __DECL_SIMD_sinf128x
22568#define __DECL_SIMD_sincos
22569#define __DECL_SIMD_sincosf
22570#define __DECL_SIMD_sincosl
22571#define __DECL_SIMD_sincosf16
22572#define __DECL_SIMD_sincosf32
22573#define __DECL_SIMD_sincosf64
22574#define __DECL_SIMD_sincosf128
22575#define __DECL_SIMD_sincosf32x
22576#define __DECL_SIMD_sincosf64x
22577#define __DECL_SIMD_sincosf128x
22578#define __DECL_SIMD_log
22579#define __DECL_SIMD_logf
22580#define __DECL_SIMD_logl
22581#define __DECL_SIMD_logf16
22582#define __DECL_SIMD_logf32
22583#define __DECL_SIMD_logf64
22584#define __DECL_SIMD_logf128
22585#define __DECL_SIMD_logf32x
22586#define __DECL_SIMD_logf64x
22587#define __DECL_SIMD_logf128x
22588#define __DECL_SIMD_exp
22589#define __DECL_SIMD_expf
22590#define __DECL_SIMD_expl
22591#define __DECL_SIMD_expf16
22592#define __DECL_SIMD_expf32
22593#define __DECL_SIMD_expf64
22594#define __DECL_SIMD_expf128
22595#define __DECL_SIMD_expf32x
22596#define __DECL_SIMD_expf64x
22597#define __DECL_SIMD_expf128x
22598#define __DECL_SIMD_pow
22599#define __DECL_SIMD_powf
22600#define __DECL_SIMD_powl
22601#define __DECL_SIMD_powf16
22602#define __DECL_SIMD_powf32
22603#define __DECL_SIMD_powf64
22604#define __DECL_SIMD_powf128
22605#define __DECL_SIMD_powf32x
22606#define __DECL_SIMD_powf64x
22607#define __DECL_SIMD_powf128x
22608#define __DECL_SIMD_acos
22609#define __DECL_SIMD_acosf
22610#define __DECL_SIMD_acosl
22611#define __DECL_SIMD_acosf16
22612#define __DECL_SIMD_acosf32
22613#define __DECL_SIMD_acosf64
22614#define __DECL_SIMD_acosf128
22615#define __DECL_SIMD_acosf32x
22616#define __DECL_SIMD_acosf64x
22617#define __DECL_SIMD_acosf128x
22618#define __DECL_SIMD_atan
22619#define __DECL_SIMD_atanf
22620#define __DECL_SIMD_atanl
22621#define __DECL_SIMD_atanf16
22622#define __DECL_SIMD_atanf32
22623#define __DECL_SIMD_atanf64
22624#define __DECL_SIMD_atanf128
22625#define __DECL_SIMD_atanf32x
22626#define __DECL_SIMD_atanf64x
22627#define __DECL_SIMD_atanf128x
22628#define __DECL_SIMD_asin
22629#define __DECL_SIMD_asinf
22630#define __DECL_SIMD_asinl
22631#define __DECL_SIMD_asinf16
22632#define __DECL_SIMD_asinf32
22633#define __DECL_SIMD_asinf64
22634#define __DECL_SIMD_asinf128
22635#define __DECL_SIMD_asinf32x
22636#define __DECL_SIMD_asinf64x
22637#define __DECL_SIMD_asinf128x
22638#define __DECL_SIMD_hypot
22639#define __DECL_SIMD_hypotf
22640#define __DECL_SIMD_hypotl
22641#define __DECL_SIMD_hypotf16
22642#define __DECL_SIMD_hypotf32
22643#define __DECL_SIMD_hypotf64
22644#define __DECL_SIMD_hypotf128
22645#define __DECL_SIMD_hypotf32x
22646#define __DECL_SIMD_hypotf64x
22647#define __DECL_SIMD_hypotf128x
22648#define __DECL_SIMD_exp2
22649#define __DECL_SIMD_exp2f
22650#define __DECL_SIMD_exp2l
22651#define __DECL_SIMD_exp2f16
22652#define __DECL_SIMD_exp2f32
22653#define __DECL_SIMD_exp2f64
22654#define __DECL_SIMD_exp2f128
22655#define __DECL_SIMD_exp2f32x
22656#define __DECL_SIMD_exp2f64x
22657#define __DECL_SIMD_exp2f128x
22658#define __DECL_SIMD_exp10
22659#define __DECL_SIMD_exp10f
22660#define __DECL_SIMD_exp10l
22661#define __DECL_SIMD_exp10f16
22662#define __DECL_SIMD_exp10f32
22663#define __DECL_SIMD_exp10f64
22664#define __DECL_SIMD_exp10f128
22665#define __DECL_SIMD_exp10f32x
22666#define __DECL_SIMD_exp10f64x
22667#define __DECL_SIMD_exp10f128x
22668#define __DECL_SIMD_cosh
22669#define __DECL_SIMD_coshf
22670#define __DECL_SIMD_coshl
22671#define __DECL_SIMD_coshf16
22672#define __DECL_SIMD_coshf32
22673#define __DECL_SIMD_coshf64
22674#define __DECL_SIMD_coshf128
22675#define __DECL_SIMD_coshf32x
22676#define __DECL_SIMD_coshf64x
22677#define __DECL_SIMD_coshf128x
22678#define __DECL_SIMD_expm1
22679#define __DECL_SIMD_expm1f
22680#define __DECL_SIMD_expm1l
22681#define __DECL_SIMD_expm1f16
22682#define __DECL_SIMD_expm1f32
22683#define __DECL_SIMD_expm1f64
22684#define __DECL_SIMD_expm1f128
22685#define __DECL_SIMD_expm1f32x
22686#define __DECL_SIMD_expm1f64x
22687#define __DECL_SIMD_expm1f128x
22688#define __DECL_SIMD_sinh
22689#define __DECL_SIMD_sinhf
22690#define __DECL_SIMD_sinhl
22691#define __DECL_SIMD_sinhf16
22692#define __DECL_SIMD_sinhf32
22693#define __DECL_SIMD_sinhf64
22694#define __DECL_SIMD_sinhf128
22695#define __DECL_SIMD_sinhf32x
22696#define __DECL_SIMD_sinhf64x
22697#define __DECL_SIMD_sinhf128x
22698#define __DECL_SIMD_cbrt
22699#define __DECL_SIMD_cbrtf
22700#define __DECL_SIMD_cbrtl
22701#define __DECL_SIMD_cbrtf16
22702#define __DECL_SIMD_cbrtf32
22703#define __DECL_SIMD_cbrtf64
22704#define __DECL_SIMD_cbrtf128
22705#define __DECL_SIMD_cbrtf32x
22706#define __DECL_SIMD_cbrtf64x
22707#define __DECL_SIMD_cbrtf128x
22708#define __DECL_SIMD_atan2
22709#define __DECL_SIMD_atan2f
22710#define __DECL_SIMD_atan2l
22711#define __DECL_SIMD_atan2f16
22712#define __DECL_SIMD_atan2f32
22713#define __DECL_SIMD_atan2f64
22714#define __DECL_SIMD_atan2f128
22715#define __DECL_SIMD_atan2f32x
22716#define __DECL_SIMD_atan2f64x
22717#define __DECL_SIMD_atan2f128x
22718#define __DECL_SIMD_log10
22719#define __DECL_SIMD_log10f
22720#define __DECL_SIMD_log10l
22721#define __DECL_SIMD_log10f16
22722#define __DECL_SIMD_log10f32
22723#define __DECL_SIMD_log10f64
22724#define __DECL_SIMD_log10f128
22725#define __DECL_SIMD_log10f32x
22726#define __DECL_SIMD_log10f64x
22727#define __DECL_SIMD_log10f128x
22728#define __DECL_SIMD_log2
22729#define __DECL_SIMD_log2f
22730#define __DECL_SIMD_log2l
22731#define __DECL_SIMD_log2f16
22732#define __DECL_SIMD_log2f32
22733#define __DECL_SIMD_log2f64
22734#define __DECL_SIMD_log2f128
22735#define __DECL_SIMD_log2f32x
22736#define __DECL_SIMD_log2f64x
22737#define __DECL_SIMD_log2f128x
22738#define __DECL_SIMD_log1p
22739#define __DECL_SIMD_log1pf
22740#define __DECL_SIMD_log1pl
22741#define __DECL_SIMD_log1pf16
22742#define __DECL_SIMD_log1pf32
22743#define __DECL_SIMD_log1pf64
22744#define __DECL_SIMD_log1pf128
22745#define __DECL_SIMD_log1pf32x
22746#define __DECL_SIMD_log1pf64x
22747#define __DECL_SIMD_log1pf128x
22748#define __DECL_SIMD_atanh
22749#define __DECL_SIMD_atanhf
22750#define __DECL_SIMD_atanhl
22751#define __DECL_SIMD_atanhf16
22752#define __DECL_SIMD_atanhf32
22753#define __DECL_SIMD_atanhf64
22754#define __DECL_SIMD_atanhf128
22755#define __DECL_SIMD_atanhf32x
22756#define __DECL_SIMD_atanhf64x
22757#define __DECL_SIMD_atanhf128x
22758#define __DECL_SIMD_acosh
22759#define __DECL_SIMD_acoshf
22760#define __DECL_SIMD_acoshl
22761#define __DECL_SIMD_acoshf16
22762#define __DECL_SIMD_acoshf32
22763#define __DECL_SIMD_acoshf64
22764#define __DECL_SIMD_acoshf128
22765#define __DECL_SIMD_acoshf32x
22766#define __DECL_SIMD_acoshf64x
22767#define __DECL_SIMD_acoshf128x
22768#define __DECL_SIMD_erf
22769#define __DECL_SIMD_erff
22770#define __DECL_SIMD_erfl
22771#define __DECL_SIMD_erff16
22772#define __DECL_SIMD_erff32
22773#define __DECL_SIMD_erff64
22774#define __DECL_SIMD_erff128
22775#define __DECL_SIMD_erff32x
22776#define __DECL_SIMD_erff64x
22777#define __DECL_SIMD_erff128x
22778#define __DECL_SIMD_tanh
22779#define __DECL_SIMD_tanhf
22780#define __DECL_SIMD_tanhl
22781#define __DECL_SIMD_tanhf16
22782#define __DECL_SIMD_tanhf32
22783#define __DECL_SIMD_tanhf64
22784#define __DECL_SIMD_tanhf128
22785#define __DECL_SIMD_tanhf32x
22786#define __DECL_SIMD_tanhf64x
22787#define __DECL_SIMD_tanhf128x
22788#define __DECL_SIMD_asinh
22789#define __DECL_SIMD_asinhf
22790#define __DECL_SIMD_asinhl
22791#define __DECL_SIMD_asinhf16
22792#define __DECL_SIMD_asinhf32
22793#define __DECL_SIMD_asinhf64
22794#define __DECL_SIMD_asinhf128
22795#define __DECL_SIMD_asinhf32x
22796#define __DECL_SIMD_asinhf64x
22797#define __DECL_SIMD_asinhf128x
22798#define __DECL_SIMD_erfc
22799#define __DECL_SIMD_erfcf
22800#define __DECL_SIMD_erfcl
22801#define __DECL_SIMD_erfcf16
22802#define __DECL_SIMD_erfcf32
22803#define __DECL_SIMD_erfcf64
22804#define __DECL_SIMD_erfcf128
22805#define __DECL_SIMD_erfcf32x
22806#define __DECL_SIMD_erfcf64x
22807#define __DECL_SIMD_erfcf128x
22808#define __DECL_SIMD_tan
22809#define __DECL_SIMD_tanf
22810#define __DECL_SIMD_tanl
22811#define __DECL_SIMD_tanf16
22812#define __DECL_SIMD_tanf32
22813#define __DECL_SIMD_tanf64
22814#define __DECL_SIMD_tanf128
22815#define __DECL_SIMD_tanf32x
22816#define __DECL_SIMD_tanf64x
22817#define __DECL_SIMD_tanf128x
22818#define HUGE_VAL (__builtin_huge_val ())
22819#define HUGE_VALF (__builtin_huge_valf ())
22820#define HUGE_VALL (__builtin_huge_vall ())
22821#define HUGE_VAL_F32 (__builtin_huge_valf32 ())
22822#define HUGE_VAL_F64 (__builtin_huge_valf64 ())
22823#define HUGE_VAL_F128 (__builtin_huge_valf128 ())
22824#define HUGE_VAL_F32X (__builtin_huge_valf32x ())
22825#define HUGE_VAL_F64X (__builtin_huge_valf64x ())
22826#define INFINITY (__builtin_inff ())
22827#define NAN (__builtin_nanf (""))
22828#define SNANF (__builtin_nansf (""))
22829#define SNAN (__builtin_nans (""))
22830#define SNANL (__builtin_nansl (""))
22831#define SNANF32 (__builtin_nansf32 (""))
22832#define SNANF64 (__builtin_nansf64 (""))
22833#define SNANF128 (__builtin_nansf128 (""))
22834#define SNANF32X (__builtin_nansf32x (""))
22835#define SNANF64X (__builtin_nansf64x (""))
22836#define __GLIBC_FLT_EVAL_METHOD __FLT_EVAL_METHOD__
22837#define __FP_LOGB0_IS_MIN 1
22838#define __FP_LOGBNAN_IS_MIN 1
22839#define FP_ILOGB0 (-2147483647 - 1)
22840#define FP_ILOGBNAN (-2147483647 - 1)
22841#define __FP_LONG_MAX 0x7fffffffffffffffL
22842#define FP_LLOGB0 (-__FP_LONG_MAX - 1)
22843#define FP_LLOGBNAN (-__FP_LONG_MAX - 1)
22844#define FP_INT_UPWARD 0
22845#define FP_INT_DOWNWARD 1
22846#define FP_INT_TOWARDZERO 2
22847#define FP_INT_TONEARESTFROMZERO 3
22848#define FP_INT_TONEAREST 4
22849#define __SIMD_DECL(function) __CONCAT (__DECL_SIMD_, function)
22850#define __MATHCALL_VEC(function,suffix,args) __SIMD_DECL (__MATH_PRECNAME (function, suffix)) __MATHCALL (function, suffix, args)
22851#define __MATHDECL_VEC(type,function,suffix,args) __SIMD_DECL (__MATH_PRECNAME (function, suffix)) __MATHDECL(type, function,suffix, args)
22852#define __MATHCALL(function,suffix,args) __MATHDECL (_Mdouble_,function,suffix, args)
22853#define __MATHDECL(type,function,suffix,args) __MATHDECL_1(type, function,suffix, args); __MATHDECL_1(type, __CONCAT(__,function),suffix, args)
22854#define __MATHCALLX(function,suffix,args,attrib) __MATHDECLX (_Mdouble_,function,suffix, args, attrib)
22855#define __MATHDECLX(type,function,suffix,args,attrib) __MATHDECL_1(type, function,suffix, args) __attribute__ (attrib); __MATHDECL_1(type, __CONCAT(__,function),suffix, args) __attribute__ (attrib)
22856#define __MATHDECL_1_IMPL(type,function,suffix,args) extern type __MATH_PRECNAME(function,suffix) args __THROW
22857#define __MATHDECL_1(type,function,suffix,args) __MATHDECL_1_IMPL(type, function, suffix, args)
22858#define __MATHDECL_ALIAS(type,function,suffix,args,alias) __MATHDECL_1(type, function, suffix, args)
22859#define __MATHREDIR(type,function,suffix,args,to) extern type __REDIRECT_NTH (__MATH_PRECNAME (function, suffix), args, to)
22860#define _Mdouble_ double
22861#define __MATH_PRECNAME(name,r) __CONCAT(name,r)
22862#define __MATH_DECLARING_DOUBLE 1
22863#define __MATH_DECLARING_FLOATN 0
22865#undef __MATH_PRECNAME
22866#undef __MATH_DECLARING_DOUBLE
22867#undef __MATH_DECLARING_FLOATN
22868#define _Mdouble_ float
22869#define __MATH_PRECNAME(name,r) name ##f ##r
22870#define __MATH_DECLARING_DOUBLE 0
22871#define __MATH_DECLARING_FLOATN 0
22873#undef __MATH_PRECNAME
22874#undef __MATH_DECLARING_DOUBLE
22875#undef __MATH_DECLARING_FLOATN
22876#define _Mdouble_ long double
22877#define __MATH_PRECNAME(name,r) name ##l ##r
22878#define __MATH_DECLARING_DOUBLE 0
22879#define __MATH_DECLARING_FLOATN 0
22880#define __MATH_DECLARE_LDOUBLE 1
22882#undef __MATH_PRECNAME
22883#undef __MATH_DECLARING_DOUBLE
22884#undef __MATH_DECLARING_FLOATN
22885#define _Mdouble_ _Float32
22886#define __MATH_PRECNAME(name,r) name ##f32 ##r
22887#define __MATH_DECLARING_DOUBLE 0
22888#define __MATH_DECLARING_FLOATN 1
22890#undef __MATH_PRECNAME
22891#undef __MATH_DECLARING_DOUBLE
22892#undef __MATH_DECLARING_FLOATN
22893#define _Mdouble_ _Float64
22894#define __MATH_PRECNAME(name,r) name ##f64 ##r
22895#define __MATH_DECLARING_DOUBLE 0
22896#define __MATH_DECLARING_FLOATN 1
22898#undef __MATH_PRECNAME
22899#undef __MATH_DECLARING_DOUBLE
22900#undef __MATH_DECLARING_FLOATN
22901#define _Mdouble_ _Float128
22902#define __MATH_PRECNAME(name,r) name ##f128 ##r
22903#define __MATH_DECLARING_DOUBLE 0
22904#define __MATH_DECLARING_FLOATN 1
22906#undef __MATH_PRECNAME
22907#undef __MATH_DECLARING_DOUBLE
22908#undef __MATH_DECLARING_FLOATN
22909#define _Mdouble_ _Float32x
22910#define __MATH_PRECNAME(name,r) name ##f32x ##r
22911#define __MATH_DECLARING_DOUBLE 0
22912#define __MATH_DECLARING_FLOATN 1
22914#undef __MATH_PRECNAME
22915#undef __MATH_DECLARING_DOUBLE
22916#undef __MATH_DECLARING_FLOATN
22917#define _Mdouble_ _Float64x
22918#define __MATH_PRECNAME(name,r) name ##f64x ##r
22919#define __MATH_DECLARING_DOUBLE 0
22920#define __MATH_DECLARING_FLOATN 1
22922#undef __MATH_PRECNAME
22923#undef __MATH_DECLARING_DOUBLE
22924#undef __MATH_DECLARING_FLOATN
22925#undef __MATHDECL_1_IMPL
22927#undef __MATHDECL_ALIAS
22930#define __MATHCALL_NARROW_ARGS_1 (_Marg_ __x)
22931#define __MATHCALL_NARROW_ARGS_2 (_Marg_ __x, _Marg_ __y)
22932#define __MATHCALL_NARROW_ARGS_3 (_Marg_ __x, _Marg_ __y, _Marg_ __z)
22933#define __MATHCALL_NARROW_NORMAL(func,nargs) extern _Mret_ func __MATHCALL_NARROW_ARGS_ ## nargs __THROW
22934#define __MATHCALL_NARROW_REDIR(func,redir,nargs) extern _Mret_ __REDIRECT_NTH (func, __MATHCALL_NARROW_ARGS_ ## nargs, redir)
22935#define __MATHCALL_NARROW(func,redir,nargs) __MATHCALL_NARROW_NORMAL (func, nargs)
22936#define _Mret_ float
22937#define _Marg_ double
22938#define __MATHCALL_NAME(name) f ## name
22941#undef __MATHCALL_NAME
22942#define _Mret_ float
22943#define _Marg_ long double
22944#define __MATHCALL_NAME(name) f ## name ## l
22947#undef __MATHCALL_NAME
22948#define _Mret_ double
22949#define _Marg_ long double
22950#define __MATHCALL_NAME(name) d ## name ## l
22953#undef __MATHCALL_NAME
22954#define _Mret_ _Float32
22955#define _Marg_ _Float32x
22956#define __MATHCALL_NAME(name) f32 ## name ## f32x
22959#undef __MATHCALL_NAME
22960#define _Mret_ _Float32
22961#define _Marg_ _Float64
22962#define __MATHCALL_NAME(name) f32 ## name ## f64
22965#undef __MATHCALL_NAME
22966#define _Mret_ _Float32
22967#define _Marg_ _Float64x
22968#define __MATHCALL_NAME(name) f32 ## name ## f64x
22971#undef __MATHCALL_NAME
22972#define _Mret_ _Float32
22973#define _Marg_ _Float128
22974#define __MATHCALL_NAME(name) f32 ## name ## f128
22977#undef __MATHCALL_NAME
22978#define _Mret_ _Float32x
22979#define _Marg_ _Float64
22980#define __MATHCALL_NAME(name) f32x ## name ## f64
22983#undef __MATHCALL_NAME
22984#define _Mret_ _Float32x
22985#define _Marg_ _Float64x
22986#define __MATHCALL_NAME(name) f32x ## name ## f64x
22989#undef __MATHCALL_NAME
22990#define _Mret_ _Float32x
22991#define _Marg_ _Float128
22992#define __MATHCALL_NAME(name) f32x ## name ## f128
22995#undef __MATHCALL_NAME
22996#define _Mret_ _Float64
22997#define _Marg_ _Float64x
22998#define __MATHCALL_NAME(name) f64 ## name ## f64x
23001#undef __MATHCALL_NAME
23002#define _Mret_ _Float64
23003#define _Marg_ _Float128
23004#define __MATHCALL_NAME(name) f64 ## name ## f128
23007#undef __MATHCALL_NAME
23008#define _Mret_ _Float64x
23009#define _Marg_ _Float128
23010#define __MATHCALL_NAME(name) f64x ## name ## f128
23013#undef __MATHCALL_NAME
23014#undef __MATHCALL_NARROW_ARGS_1
23015#undef __MATHCALL_NARROW_ARGS_2
23016#undef __MATHCALL_NARROW_ARGS_3
23017#undef __MATHCALL_NARROW_NORMAL
23018#undef __MATHCALL_NARROW_REDIR
23019#undef __MATHCALL_NARROW
23020#define __MATH_TG_F32(FUNC,ARGS) _Float32: FUNC ## f ARGS,
23021#define __MATH_TG_F64X(FUNC,ARGS) _Float64x: FUNC ## l ARGS,
23022#define __MATH_TG(TG_ARG,FUNC,ARGS) _Generic ((TG_ARG), float: FUNC ## f ARGS, __MATH_TG_F32 (FUNC, ARGS) default: FUNC ARGS, long double: FUNC ## l ARGS, __MATH_TG_F64X (FUNC, ARGS) _Float128: FUNC ## f128 ARGS)
23024#define FP_INFINITE 1
23026#define FP_SUBNORMAL 3
23028#define fpclassify(x) __builtin_fpclassify (FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, x)
23029#define signbit(x) __builtin_signbit (x)
23030#define isfinite(x) __builtin_isfinite (x)
23031#define isnormal(x) __builtin_isnormal (x)
23032#define isnan(x) __builtin_isnan (x)
23033#define isinf(x) __builtin_isinf_sign (x)
23034#define MATH_ERRNO 1
23035#define MATH_ERREXCEPT 2
23036#define math_errhandling (MATH_ERRNO | MATH_ERREXCEPT)
23037#define __iscanonicalf(x) ((void) (__typeof (x)) (x), 1)
23038#define __iscanonical(x) ((void) (__typeof (x)) (x), 1)
23039#define __iscanonicalf128(x) ((void) (__typeof (x)) (x), 1)
23040#define iscanonical(x) __MATH_TG ((x), __iscanonical, (x))
23041#define issignaling(x) __MATH_TG ((x), __issignaling, (x))
23042#define issubnormal(x) (fpclassify (x) == FP_SUBNORMAL)
23043#define iszero(x) (((__typeof (x)) (x)) == 0)
23044#define MAXFLOAT 3.40282347e+38F
23045#define M_E 2.7182818284590452354
23046#define M_LOG2E 1.4426950408889634074
23047#define M_LOG10E 0.43429448190325182765
23048#define M_LN2 0.69314718055994530942
23049#define M_LN10 2.30258509299404568402
23050#define M_PI 3.14159265358979323846
23051#define M_PI_2 1.57079632679489661923
23052#define M_PI_4 0.78539816339744830962
23053#define M_1_PI 0.31830988618379067154
23054#define M_2_PI 0.63661977236758134308
23055#define M_2_SQRTPI 1.12837916709551257390
23056#define M_SQRT2 1.41421356237309504880
23057#define M_SQRT1_2 0.70710678118654752440
23058#define M_Ef 2.7182818284590452354f
23059#define M_LOG2Ef 1.4426950408889634074f
23060#define M_LOG10Ef 0.43429448190325182765f
23061#define M_LN2f 0.69314718055994530942f
23062#define M_LN10f 2.30258509299404568402f
23063#define M_PIf 3.14159265358979323846f
23064#define M_PI_2f 1.57079632679489661923f
23065#define M_PI_4f 0.78539816339744830962f
23066#define M_1_PIf 0.31830988618379067154f
23067#define M_2_PIf 0.63661977236758134308f
23068#define M_2_SQRTPIf 1.12837916709551257390f
23069#define M_SQRT2f 1.41421356237309504880f
23070#define M_SQRT1_2f 0.70710678118654752440f
23071#define M_El 2.718281828459045235360287471352662498L
23072#define M_LOG2El 1.442695040888963407359924681001892137L
23073#define M_LOG10El 0.434294481903251827651128918916605082L
23074#define M_LN2l 0.693147180559945309417232121458176568L
23075#define M_LN10l 2.302585092994045684017991454684364208L
23076#define M_PIl 3.141592653589793238462643383279502884L
23077#define M_PI_2l 1.570796326794896619231321691639751442L
23078#define M_PI_4l 0.785398163397448309615660845819875721L
23079#define M_1_PIl 0.318309886183790671537767526745028724L
23080#define M_2_PIl 0.636619772367581343075535053490057448L
23081#define M_2_SQRTPIl 1.128379167095512573896158903121545172L
23082#define M_SQRT2l 1.414213562373095048801688724209698079L
23083#define M_SQRT1_2l 0.707106781186547524400844362104849039L
23084#define M_Ef32 __f32 (2.718281828459045235360287471352662498)
23085#define M_LOG2Ef32 __f32 (1.442695040888963407359924681001892137)
23086#define M_LOG10Ef32 __f32 (0.434294481903251827651128918916605082)
23087#define M_LN2f32 __f32 (0.693147180559945309417232121458176568)
23088#define M_LN10f32 __f32 (2.302585092994045684017991454684364208)
23089#define M_PIf32 __f32 (3.141592653589793238462643383279502884)
23090#define M_PI_2f32 __f32 (1.570796326794896619231321691639751442)
23091#define M_PI_4f32 __f32 (0.785398163397448309615660845819875721)
23092#define M_1_PIf32 __f32 (0.318309886183790671537767526745028724)
23093#define M_2_PIf32 __f32 (0.636619772367581343075535053490057448)
23094#define M_2_SQRTPIf32 __f32 (1.128379167095512573896158903121545172)
23095#define M_SQRT2f32 __f32 (1.414213562373095048801688724209698079)
23096#define M_SQRT1_2f32 __f32 (0.707106781186547524400844362104849039)
23097#define M_Ef64 __f64 (2.718281828459045235360287471352662498)
23098#define M_LOG2Ef64 __f64 (1.442695040888963407359924681001892137)
23099#define M_LOG10Ef64 __f64 (0.434294481903251827651128918916605082)
23100#define M_LN2f64 __f64 (0.693147180559945309417232121458176568)
23101#define M_LN10f64 __f64 (2.302585092994045684017991454684364208)
23102#define M_PIf64 __f64 (3.141592653589793238462643383279502884)
23103#define M_PI_2f64 __f64 (1.570796326794896619231321691639751442)
23104#define M_PI_4f64 __f64 (0.785398163397448309615660845819875721)
23105#define M_1_PIf64 __f64 (0.318309886183790671537767526745028724)
23106#define M_2_PIf64 __f64 (0.636619772367581343075535053490057448)
23107#define M_2_SQRTPIf64 __f64 (1.128379167095512573896158903121545172)
23108#define M_SQRT2f64 __f64 (1.414213562373095048801688724209698079)
23109#define M_SQRT1_2f64 __f64 (0.707106781186547524400844362104849039)
23110#define M_Ef128 __f128 (2.718281828459045235360287471352662498)
23111#define M_LOG2Ef128 __f128 (1.442695040888963407359924681001892137)
23112#define M_LOG10Ef128 __f128 (0.434294481903251827651128918916605082)
23113#define M_LN2f128 __f128 (0.693147180559945309417232121458176568)
23114#define M_LN10f128 __f128 (2.302585092994045684017991454684364208)
23115#define M_PIf128 __f128 (3.141592653589793238462643383279502884)
23116#define M_PI_2f128 __f128 (1.570796326794896619231321691639751442)
23117#define M_PI_4f128 __f128 (0.785398163397448309615660845819875721)
23118#define M_1_PIf128 __f128 (0.318309886183790671537767526745028724)
23119#define M_2_PIf128 __f128 (0.636619772367581343075535053490057448)
23120#define M_2_SQRTPIf128 __f128 (1.128379167095512573896158903121545172)
23121#define M_SQRT2f128 __f128 (1.414213562373095048801688724209698079)
23122#define M_SQRT1_2f128 __f128 (0.707106781186547524400844362104849039)
23123#define M_Ef32x __f32x (2.718281828459045235360287471352662498)
23124#define M_LOG2Ef32x __f32x (1.442695040888963407359924681001892137)
23125#define M_LOG10Ef32x __f32x (0.434294481903251827651128918916605082)
23126#define M_LN2f32x __f32x (0.693147180559945309417232121458176568)
23127#define M_LN10f32x __f32x (2.302585092994045684017991454684364208)
23128#define M_PIf32x __f32x (3.141592653589793238462643383279502884)
23129#define M_PI_2f32x __f32x (1.570796326794896619231321691639751442)
23130#define M_PI_4f32x __f32x (0.785398163397448309615660845819875721)
23131#define M_1_PIf32x __f32x (0.318309886183790671537767526745028724)
23132#define M_2_PIf32x __f32x (0.636619772367581343075535053490057448)
23133#define M_2_SQRTPIf32x __f32x (1.128379167095512573896158903121545172)
23134#define M_SQRT2f32x __f32x (1.414213562373095048801688724209698079)
23135#define M_SQRT1_2f32x __f32x (0.707106781186547524400844362104849039)
23136#define M_Ef64x __f64x (2.718281828459045235360287471352662498)
23137#define M_LOG2Ef64x __f64x (1.442695040888963407359924681001892137)
23138#define M_LOG10Ef64x __f64x (0.434294481903251827651128918916605082)
23139#define M_LN2f64x __f64x (0.693147180559945309417232121458176568)
23140#define M_LN10f64x __f64x (2.302585092994045684017991454684364208)
23141#define M_PIf64x __f64x (3.141592653589793238462643383279502884)
23142#define M_PI_2f64x __f64x (1.570796326794896619231321691639751442)
23143#define M_PI_4f64x __f64x (0.785398163397448309615660845819875721)
23144#define M_1_PIf64x __f64x (0.318309886183790671537767526745028724)
23145#define M_2_PIf64x __f64x (0.636619772367581343075535053490057448)
23146#define M_2_SQRTPIf64x __f64x (1.128379167095512573896158903121545172)
23147#define M_SQRT2f64x __f64x (1.414213562373095048801688724209698079)
23148#define M_SQRT1_2f64x __f64x (0.707106781186547524400844362104849039)
23149#define isgreater(x,y) __builtin_isgreater(x, y)
23150#define isgreaterequal(x,y) __builtin_isgreaterequal(x, y)
23151#define isless(x,y) __builtin_isless(x, y)
23152#define islessequal(x,y) __builtin_islessequal(x, y)
23153#define islessgreater(x,y) __builtin_islessgreater(x, y)
23154#define isunordered(x,y) __builtin_isunordered(x, y)
23155#define __MATH_EVAL_FMT2(x,y) ((x) + (y) + 0.0f)
23156#define iseqsig(x,y) __MATH_TG (__MATH_EVAL_FMT2 (x, y), __iseqsig, ((x), (y)))
23158#define __need_size_t
23160#undef __need_ptrdiff_t
23161#undef __need_size_t
23162#undef __need_wchar_t
23164#define NULL ((void *)0)
23166#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
23167#define _BITS_TIME_H 1
23168#define CLOCKS_PER_SEC ((__clock_t) 1000000)
23169#define CLOCK_REALTIME 0
23170#define CLOCK_MONOTONIC 1
23171#define CLOCK_PROCESS_CPUTIME_ID 2
23172#define CLOCK_THREAD_CPUTIME_ID 3
23173#define CLOCK_MONOTONIC_RAW 4
23174#define CLOCK_REALTIME_COARSE 5
23175#define CLOCK_MONOTONIC_COARSE 6
23176#define CLOCK_BOOTTIME 7
23177#define CLOCK_REALTIME_ALARM 8
23178#define CLOCK_BOOTTIME_ALARM 9
23179#define CLOCK_TAI 11
23180#define TIMER_ABSTIME 1
23181#define _BITS_TIMEX_H 1
23182#define ADJ_OFFSET 0x0001
23183#define ADJ_FREQUENCY 0x0002
23184#define ADJ_MAXERROR 0x0004
23185#define ADJ_ESTERROR 0x0008
23186#define ADJ_STATUS 0x0010
23187#define ADJ_TIMECONST 0x0020
23188#define ADJ_TAI 0x0080
23189#define ADJ_SETOFFSET 0x0100
23190#define ADJ_MICRO 0x1000
23191#define ADJ_NANO 0x2000
23192#define ADJ_TICK 0x4000
23193#define ADJ_OFFSET_SINGLESHOT 0x8001
23194#define ADJ_OFFSET_SS_READ 0xa001
23195#define MOD_OFFSET ADJ_OFFSET
23196#define MOD_FREQUENCY ADJ_FREQUENCY
23197#define MOD_MAXERROR ADJ_MAXERROR
23198#define MOD_ESTERROR ADJ_ESTERROR
23199#define MOD_STATUS ADJ_STATUS
23200#define MOD_TIMECONST ADJ_TIMECONST
23201#define MOD_CLKB ADJ_TICK
23202#define MOD_CLKA ADJ_OFFSET_SINGLESHOT
23203#define MOD_TAI ADJ_TAI
23204#define MOD_MICRO ADJ_MICRO
23205#define MOD_NANO ADJ_NANO
23206#define STA_PLL 0x0001
23207#define STA_PPSFREQ 0x0002
23208#define STA_PPSTIME 0x0004
23209#define STA_FLL 0x0008
23210#define STA_INS 0x0010
23211#define STA_DEL 0x0020
23212#define STA_UNSYNC 0x0040
23213#define STA_FREQHOLD 0x0080
23214#define STA_PPSSIGNAL 0x0100
23215#define STA_PPSJITTER 0x0200
23216#define STA_PPSWANDER 0x0400
23217#define STA_PPSERROR 0x0800
23218#define STA_CLOCKERR 0x1000
23219#define STA_NANO 0x2000
23220#define STA_MODE 0x4000
23221#define STA_CLK 0x8000
23222#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
23223#define __struct_tm_defined 1
23224#define __itimerspec_defined 1
23226#define __isleap(year) ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
23227#define _SYS_TIME_H 1
23228#define TIMEVAL_TO_TIMESPEC(tv,ts) { (ts)->tv_sec = (tv)->tv_sec; (ts)->tv_nsec = (tv)->tv_usec * 1000; }
23229#define TIMESPEC_TO_TIMEVAL(tv,ts) { (tv)->tv_sec = (ts)->tv_sec; (tv)->tv_usec = (ts)->tv_nsec / 1000; }
23230#define ITIMER_REAL ITIMER_REAL
23231#define ITIMER_VIRTUAL ITIMER_VIRTUAL
23232#define ITIMER_PROF ITIMER_PROF
23233#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
23234#define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
23235#define timercmp(a,b,CMP) (((a)->tv_sec == (b)->tv_sec) ? ((a)->tv_usec CMP (b)->tv_usec) : ((a)->tv_sec CMP (b)->tv_sec))
23236#define timeradd(a,b,result) do { (result)->tv_sec = (a)->tv_sec + (b)->tv_sec; (result)->tv_usec = (a)->tv_usec + (b)->tv_usec; if ((result)->tv_usec >= 1000000) { ++(result)->tv_sec; (result)->tv_usec -= 1000000; } } while (0)
23237#define timersub(a,b,result) do { (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; if ((result)->tv_usec < 0) { --(result)->tv_sec; (result)->tv_usec += 1000000; } } while (0)
23238#pragma GCC visibility push(default)
23239#define HAVE_FINITE 1
23240#define finite(x) isfinite(x)
23241#pragma GCC visibility pop
23243#define RB_GNUC_EXTENSION __extension__
23244#define RB_GNUC_EXTENSION_BLOCK(x) __extension__ ({ x; })
23245#define RUBY_MBCHAR_MAXSIZE INT_MAX
23246#define FLUSH_REGISTER_WINDOWS ((void)0)
23247#define RBIMPL_ANYARGS_H
23248#define RBIMPL_ATTR_WEAKREF_H
23249#define RBIMPL_ATTR_WEAKREF(sym) __attribute__((__weakref__(#sym)))
23250#define RBIMPL_INTERN_CLASS_H
23251#define RBIMPL_VALUE_H
23252#define RBIMPL_STATIC_ASSERT_H
23254#define __ASSERT_VOID_CAST (void)
23255#define assert(expr) (__ASSERT_VOID_CAST (0))
23256#define assert_perror(errnum) (__ASSERT_VOID_CAST (0))
23257#undef static_assert
23258#define static_assert _Static_assert
23259#define RBIMPL_STATIC_ASSERT0 __extension__ _Static_assert
23260#define RBIMPL_STATIC_ASSERT(name,expr) RBIMPL_STATIC_ASSERT0(expr, #name ": " #expr)
23261#define RUBY_BACKWARD2_LIMITS_H
23262#define _GCC_LIMITS_H_
23263#define _GCC_NEXT_LIMITS_H
23264#define _LIBC_LIMITS_H_ 1
23265#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23266#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
23267#undef __GLIBC_USE_LIB_EXT2
23268#define __GLIBC_USE_LIB_EXT2 1
23269#undef __GLIBC_USE_IEC_60559_BFP_EXT
23270#define __GLIBC_USE_IEC_60559_BFP_EXT 1
23271#undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X
23272#define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1
23273#undef __GLIBC_USE_IEC_60559_EXT
23274#define __GLIBC_USE_IEC_60559_EXT 1
23275#undef __GLIBC_USE_IEC_60559_FUNCS_EXT
23276#define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
23277#undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
23278#define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1
23279#undef __GLIBC_USE_IEC_60559_TYPES_EXT
23280#define __GLIBC_USE_IEC_60559_TYPES_EXT 1
23281#define MB_LEN_MAX 16
23282#define LLONG_MIN (-LLONG_MAX-1)
23283#define LLONG_MAX __LONG_LONG_MAX__
23284#define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
23285#define CHAR_WIDTH 8
23286#define SCHAR_WIDTH 8
23287#define UCHAR_WIDTH 8
23288#define SHRT_WIDTH 16
23289#define USHRT_WIDTH 16
23290#define INT_WIDTH 32
23291#define UINT_WIDTH 32
23292#define LONG_WIDTH __WORDSIZE
23293#define ULONG_WIDTH __WORDSIZE
23294#define LLONG_WIDTH 64
23295#define ULLONG_WIDTH 64
23297#define BOOL_WIDTH 1
23298#define _BITS_POSIX1_LIM_H 1
23299#define __WORDSIZE 64
23300#define __WORDSIZE_TIME64_COMPAT32 1
23301#define __SYSCALL_WORDSIZE 64
23302#define _POSIX_AIO_LISTIO_MAX 2
23303#define _POSIX_AIO_MAX 1
23304#define _POSIX_ARG_MAX 4096
23305#define _POSIX_CHILD_MAX 25
23306#define _POSIX_DELAYTIMER_MAX 32
23307#define _POSIX_HOST_NAME_MAX 255
23308#define _POSIX_LINK_MAX 8
23309#define _POSIX_LOGIN_NAME_MAX 9
23310#define _POSIX_MAX_CANON 255
23311#define _POSIX_MAX_INPUT 255
23312#define _POSIX_MQ_OPEN_MAX 8
23313#define _POSIX_MQ_PRIO_MAX 32
23314#define _POSIX_NAME_MAX 14
23315#define _POSIX_NGROUPS_MAX 8
23316#define _POSIX_OPEN_MAX 20
23317#define _POSIX_FD_SETSIZE _POSIX_OPEN_MAX
23318#define _POSIX_PATH_MAX 256
23319#define _POSIX_PIPE_BUF 512
23320#define _POSIX_RE_DUP_MAX 255
23321#define _POSIX_RTSIG_MAX 8
23322#define _POSIX_SEM_NSEMS_MAX 256
23323#define _POSIX_SEM_VALUE_MAX 32767
23324#define _POSIX_SIGQUEUE_MAX 32
23325#define _POSIX_SSIZE_MAX 32767
23326#define _POSIX_STREAM_MAX 8
23327#define _POSIX_SYMLINK_MAX 255
23328#define _POSIX_SYMLOOP_MAX 8
23329#define _POSIX_TIMER_MAX 32
23330#define _POSIX_TTY_NAME_MAX 9
23331#define _POSIX_TZNAME_MAX 6
23332#define _POSIX_QLIMIT 1
23333#define _POSIX_HIWAT _POSIX_PIPE_BUF
23334#define _POSIX_UIO_MAXIOV 16
23335#define _POSIX_CLOCKRES_MIN 20000000
23336#define __undef_NR_OPEN
23337#define __undef_LINK_MAX
23338#define __undef_OPEN_MAX
23339#define __undef_ARG_MAX
23340#define _LINUX_LIMITS_H
23341#define NR_OPEN 1024
23342#define NGROUPS_MAX 65536
23343#define ARG_MAX 131072
23344#define LINK_MAX 127
23345#define MAX_CANON 255
23346#define MAX_INPUT 255
23347#define NAME_MAX 255
23348#define PATH_MAX 4096
23349#define PIPE_BUF 4096
23350#define XATTR_NAME_MAX 255
23351#define XATTR_SIZE_MAX 65536
23352#define XATTR_LIST_MAX 65536
23353#define RTSIG_MAX 32
23355#undef __undef_NR_OPEN
23357#undef __undef_LINK_MAX
23359#undef __undef_OPEN_MAX
23361#undef __undef_ARG_MAX
23362#define _POSIX_THREAD_KEYS_MAX 128
23363#define PTHREAD_KEYS_MAX 1024
23364#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
23365#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
23366#define _POSIX_THREAD_THREADS_MAX 64
23367#undef PTHREAD_THREADS_MAX
23368#define AIO_PRIO_DELTA_MAX 20
23369#define __SC_THREAD_STACK_MIN_VALUE 75
23370#define PTHREAD_STACK_MIN __sysconf (__SC_THREAD_STACK_MIN_VALUE)
23371#define DELAYTIMER_MAX 2147483647
23372#define TTY_NAME_MAX 32
23373#define LOGIN_NAME_MAX 256
23374#define HOST_NAME_MAX 64
23375#define MQ_PRIO_MAX 32768
23376#define SEM_VALUE_MAX (2147483647)
23377#define SSIZE_MAX LONG_MAX
23378#define _BITS_POSIX2_LIM_H 1
23379#define _POSIX2_BC_BASE_MAX 99
23380#define _POSIX2_BC_DIM_MAX 2048
23381#define _POSIX2_BC_SCALE_MAX 99
23382#define _POSIX2_BC_STRING_MAX 1000
23383#define _POSIX2_COLL_WEIGHTS_MAX 2
23384#define _POSIX2_EXPR_NEST_MAX 32
23385#define _POSIX2_LINE_MAX 2048
23386#define _POSIX2_RE_DUP_MAX 255
23387#define _POSIX2_CHARCLASS_NAME_MAX 14
23388#define BC_BASE_MAX _POSIX2_BC_BASE_MAX
23389#define BC_DIM_MAX _POSIX2_BC_DIM_MAX
23390#define BC_SCALE_MAX _POSIX2_BC_SCALE_MAX
23391#define BC_STRING_MAX _POSIX2_BC_STRING_MAX
23392#define COLL_WEIGHTS_MAX 255
23393#define EXPR_NEST_MAX _POSIX2_EXPR_NEST_MAX
23394#define LINE_MAX _POSIX2_LINE_MAX
23395#define CHARCLASS_NAME_MAX 2048
23396#define RE_DUP_MAX (0x7fff)
23397#define _XOPEN_LIM_H 1
23398#define _XOPEN_IOV_MAX _POSIX_UIO_MAXIOV
23399#define _BITS_UIO_LIM_H 1
23400#define __IOV_MAX 1024
23401#define IOV_MAX __IOV_MAX
23402#define NL_ARGMAX _POSIX_ARG_MAX
23403#define NL_LANGMAX _POSIX2_LINE_MAX
23404#define NL_MSGMAX INT_MAX
23405#define NL_NMAX INT_MAX
23406#define NL_SETMAX INT_MAX
23407#define NL_TEXTMAX INT_MAX
23411#undef _GCC_NEXT_LIMITS_H
23412#define _LIMITS_H___
23414#define CHAR_BIT __CHAR_BIT__
23416#define SCHAR_MIN (-SCHAR_MAX - 1)
23418#define SCHAR_MAX __SCHAR_MAX__
23420#define UCHAR_MAX (SCHAR_MAX * 2 + 1)
23422#define CHAR_MIN SCHAR_MIN
23424#define CHAR_MAX SCHAR_MAX
23426#define SHRT_MIN (-SHRT_MAX - 1)
23428#define SHRT_MAX __SHRT_MAX__
23430#define USHRT_MAX (SHRT_MAX * 2 + 1)
23432#define INT_MIN (-INT_MAX - 1)
23434#define INT_MAX __INT_MAX__
23436#define UINT_MAX (INT_MAX * 2U + 1U)
23438#define LONG_MIN (-LONG_MAX - 1L)
23440#define LONG_MAX __LONG_MAX__
23442#define ULONG_MAX (LONG_MAX * 2UL + 1UL)
23444#define LLONG_MIN (-LLONG_MAX - 1LL)
23446#define LLONG_MAX __LONG_LONG_MAX__
23448#define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
23449#undef LONG_LONG_MIN
23450#define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL)
23451#undef LONG_LONG_MAX
23452#define LONG_LONG_MAX __LONG_LONG_MAX__
23453#undef ULONG_LONG_MAX
23454#define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL)
23456#define CHAR_WIDTH __SCHAR_WIDTH__
23458#define SCHAR_WIDTH __SCHAR_WIDTH__
23460#define UCHAR_WIDTH __SCHAR_WIDTH__
23462#define SHRT_WIDTH __SHRT_WIDTH__
23464#define USHRT_WIDTH __SHRT_WIDTH__
23466#define INT_WIDTH __INT_WIDTH__
23468#define UINT_WIDTH __INT_WIDTH__
23470#define LONG_WIDTH __LONG_WIDTH__
23472#define ULONG_WIDTH __LONG_WIDTH__
23474#define LLONG_WIDTH __LONG_LONG_WIDTH__
23476#define ULLONG_WIDTH __LONG_LONG_WIDTH__
23477#define SIGNED_VALUE long
23478#define SIZEOF_VALUE SIZEOF_LONG
23479#define PRI_VALUE_PREFIX "l"
23480#define RBIMPL_VALUE_NULL 0UL
23481#define RBIMPL_VALUE_ONE 1UL
23482#define RBIMPL_VALUE_FULL ULONG_MAX
23483#pragma GCC visibility push(default)
23484#pragma GCC visibility pop
23485#define RBIMPL_INTERN_VM_H
23486#pragma GCC visibility push(default)
23487#define HAVE_RB_DEFINE_ALLOC_FUNC 1
23488#pragma GCC visibility pop
23489#define RBIMPL_METHOD_H
23490#pragma GCC visibility push(default)
23491#pragma GCC visibility pop
23492#define RBIMPL_CFUNC_IS_rb_f_notimplement(f) __builtin_types_compatible_p( __typeof__(f), __typeof__(rb_f_notimplement))
23493#define RBIMPL_ANYARGS_DISPATCH(expr,truthy,falsy) __builtin_choose_expr( __builtin_choose_expr( __builtin_constant_p(expr), (expr), 0), (truthy), (falsy))
23494#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_singleton_method_m2, rb_define_singleton_method_m3)
23495#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_singleton_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m2(n))
23496#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_singleton_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_m1(n))
23497#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_singleton_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_00(n))
23498#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_singleton_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_01(n))
23499#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_singleton_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_02(n))
23500#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_singleton_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_03(n))
23501#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_singleton_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_04(n))
23502#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_singleton_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_05(n))
23503#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_singleton_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_06(n))
23504#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_singleton_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_07(n))
23505#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_singleton_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_08(n))
23506#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_singleton_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_09(n))
23507#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_singleton_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_10(n))
23508#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_singleton_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_11(n))
23509#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_singleton_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_12(n))
23510#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_singleton_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_13(n))
23511#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_singleton_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_14(n))
23512#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_protected_method_m2, rb_define_protected_method_m3)
23513#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_protected_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m2(n))
23514#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_protected_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_m1(n))
23515#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_protected_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_00(n))
23516#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_protected_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_01(n))
23517#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_protected_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_02(n))
23518#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_protected_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_03(n))
23519#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_protected_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_04(n))
23520#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_protected_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_05(n))
23521#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_protected_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_06(n))
23522#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_protected_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_07(n))
23523#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_protected_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_08(n))
23524#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_protected_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_09(n))
23525#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_protected_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_10(n))
23526#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_protected_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_11(n))
23527#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_protected_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_12(n))
23528#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_protected_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_13(n))
23529#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_protected_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_14(n))
23530#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_private_method_m2, rb_define_private_method_m3)
23531#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_private_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m2(n))
23532#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_private_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_m1(n))
23533#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_private_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_00(n))
23534#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_private_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_01(n))
23535#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_private_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_02(n))
23536#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_private_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_03(n))
23537#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_private_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_04(n))
23538#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_private_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_05(n))
23539#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_private_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_06(n))
23540#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_private_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_07(n))
23541#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_private_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_08(n))
23542#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_private_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_09(n))
23543#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_private_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_10(n))
23544#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_private_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_11(n))
23545#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_private_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_12(n))
23546#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_private_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_13(n))
23547#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_private_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_14(n))
23548#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_module_function_m2, rb_define_module_function_m3)
23549#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_module_function_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m2(n))
23550#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_module_function_00, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_m1(n))
23551#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_module_function_01, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_00(n))
23552#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_module_function_02, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_01(n))
23553#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_module_function_03, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_02(n))
23554#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_module_function_04, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_03(n))
23555#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_module_function_05, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_04(n))
23556#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_module_function_06, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_05(n))
23557#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_module_function_07, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_06(n))
23558#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_module_function_08, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_07(n))
23559#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_module_function_09, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_08(n))
23560#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_module_function_10, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_09(n))
23561#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_module_function_11, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_10(n))
23562#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_module_function_12, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_11(n))
23563#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_module_function_13, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_12(n))
23564#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_module_function_14, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_13(n))
23565#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_module_function_15, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_14(n))
23566#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_global_function_m2, rb_define_global_function_m3)
23567#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_global_function_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m2(n))
23568#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_global_function_00, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_m1(n))
23569#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_global_function_01, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_00(n))
23570#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_global_function_02, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_01(n))
23571#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_global_function_03, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_02(n))
23572#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_global_function_04, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_03(n))
23573#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_global_function_05, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_04(n))
23574#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_global_function_06, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_05(n))
23575#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_global_function_07, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_06(n))
23576#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_global_function_08, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_07(n))
23577#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_global_function_09, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_08(n))
23578#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_global_function_10, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_09(n))
23579#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_global_function_11, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_10(n))
23580#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_global_function_12, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_11(n))
23581#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_global_function_13, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_12(n))
23582#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_global_function_14, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_13(n))
23583#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_global_function_15, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_14(n))
23584#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_method_id_m2, rb_define_method_id_m3)
23585#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_method_id_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m2(n))
23586#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_method_id_00, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_m1(n))
23587#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_method_id_01, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_00(n))
23588#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_method_id_02, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_01(n))
23589#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_method_id_03, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_02(n))
23590#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_method_id_04, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_03(n))
23591#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_method_id_05, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_04(n))
23592#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_method_id_06, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_05(n))
23593#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_method_id_07, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_06(n))
23594#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_method_id_08, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_07(n))
23595#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_method_id_09, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_08(n))
23596#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_method_id_10, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_09(n))
23597#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_method_id_11, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_10(n))
23598#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_method_id_12, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_11(n))
23599#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_method_id_13, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_12(n))
23600#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_method_id_14, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_13(n))
23601#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_method_id_15, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_14(n))
23602#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_m2(n) RBIMPL_ANYARGS_DISPATCH((n) == -2, rb_define_method_m2, rb_define_method_m3)
23603#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_m1(n) RBIMPL_ANYARGS_DISPATCH((n) == -1, rb_define_method_m1, RBIMPL_ANYARGS_DISPATCH_rb_define_method_m2(n))
23604#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_00(n) RBIMPL_ANYARGS_DISPATCH((n) == 0, rb_define_method_00, RBIMPL_ANYARGS_DISPATCH_rb_define_method_m1(n))
23605#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_01(n) RBIMPL_ANYARGS_DISPATCH((n) == 1, rb_define_method_01, RBIMPL_ANYARGS_DISPATCH_rb_define_method_00(n))
23606#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_02(n) RBIMPL_ANYARGS_DISPATCH((n) == 2, rb_define_method_02, RBIMPL_ANYARGS_DISPATCH_rb_define_method_01(n))
23607#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_03(n) RBIMPL_ANYARGS_DISPATCH((n) == 3, rb_define_method_03, RBIMPL_ANYARGS_DISPATCH_rb_define_method_02(n))
23608#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_04(n) RBIMPL_ANYARGS_DISPATCH((n) == 4, rb_define_method_04, RBIMPL_ANYARGS_DISPATCH_rb_define_method_03(n))
23609#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_05(n) RBIMPL_ANYARGS_DISPATCH((n) == 5, rb_define_method_05, RBIMPL_ANYARGS_DISPATCH_rb_define_method_04(n))
23610#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_06(n) RBIMPL_ANYARGS_DISPATCH((n) == 6, rb_define_method_06, RBIMPL_ANYARGS_DISPATCH_rb_define_method_05(n))
23611#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_07(n) RBIMPL_ANYARGS_DISPATCH((n) == 7, rb_define_method_07, RBIMPL_ANYARGS_DISPATCH_rb_define_method_06(n))
23612#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_08(n) RBIMPL_ANYARGS_DISPATCH((n) == 8, rb_define_method_08, RBIMPL_ANYARGS_DISPATCH_rb_define_method_07(n))
23613#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_09(n) RBIMPL_ANYARGS_DISPATCH((n) == 9, rb_define_method_09, RBIMPL_ANYARGS_DISPATCH_rb_define_method_08(n))
23614#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_10(n) RBIMPL_ANYARGS_DISPATCH((n) == 10, rb_define_method_10, RBIMPL_ANYARGS_DISPATCH_rb_define_method_09(n))
23615#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_11(n) RBIMPL_ANYARGS_DISPATCH((n) == 11, rb_define_method_11, RBIMPL_ANYARGS_DISPATCH_rb_define_method_10(n))
23616#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_12(n) RBIMPL_ANYARGS_DISPATCH((n) == 12, rb_define_method_12, RBIMPL_ANYARGS_DISPATCH_rb_define_method_11(n))
23617#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_13(n) RBIMPL_ANYARGS_DISPATCH((n) == 13, rb_define_method_13, RBIMPL_ANYARGS_DISPATCH_rb_define_method_12(n))
23618#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_14(n) RBIMPL_ANYARGS_DISPATCH((n) == 14, rb_define_method_14, RBIMPL_ANYARGS_DISPATCH_rb_define_method_13(n))
23619#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_15(n) RBIMPL_ANYARGS_DISPATCH((n) == 15, rb_define_method_15, RBIMPL_ANYARGS_DISPATCH_rb_define_method_14(n))
23620#define RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_singleton_method_m3, RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method_15(n))
23621#define RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_protected_method_m3, RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method_15(n))
23622#define RBIMPL_ANYARGS_DISPATCH_rb_define_private_method(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_private_method_m3, RBIMPL_ANYARGS_DISPATCH_rb_define_private_method_15(n))
23623#define RBIMPL_ANYARGS_DISPATCH_rb_define_module_function(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_module_function_m3, RBIMPL_ANYARGS_DISPATCH_rb_define_module_function_15(n))
23624#define RBIMPL_ANYARGS_DISPATCH_rb_define_global_function(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_global_function_m3, RBIMPL_ANYARGS_DISPATCH_rb_define_global_function_15(n))
23625#define RBIMPL_ANYARGS_DISPATCH_rb_define_method_id(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_method_id_m3, RBIMPL_ANYARGS_DISPATCH_rb_define_method_id_15(n))
23626#define RBIMPL_ANYARGS_DISPATCH_rb_define_method(n,f) RBIMPL_ANYARGS_DISPATCH(RBIMPL_CFUNC_IS_rb_f_notimplement(f), rb_define_method_m3, RBIMPL_ANYARGS_DISPATCH_rb_define_method_15(n))
23627#define RBIMPL_ANYARGS_ATTRSET(sym) RBIMPL_ATTR_MAYBE_UNUSED() RBIMPL_ATTR_NONNULL(()) RBIMPL_ATTR_WEAKREF(sym)
23628#define RBIMPL_ANYARGS_DECL(sym,...) RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _m3(__VA_ARGS__, VALUE(*)(ANYARGS), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _m2(__VA_ARGS__, VALUE(*)(VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _m1(__VA_ARGS__, VALUE(*)(int, union { VALUE *x; const VALUE *y; } __attribute__((__transparent_union__)), VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _00(__VA_ARGS__, VALUE(*)(VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _01(__VA_ARGS__, VALUE(*)(VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _02(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _03(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _04(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _05(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _06(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _07(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _08(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _09(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _10(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _11(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _12(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _13(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _14(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int); RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _15(__VA_ARGS__, VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE), int);
23629#define rb_define_method(klass,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_method((arity), (func))((klass), (mid), (func), (arity))
23630#define rb_define_method_id(klass,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_method_id((arity), (func))((klass), (mid), (func), (arity))
23631#define rb_define_singleton_method(obj,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_singleton_method((arity), (func))((obj), (mid), (func), (arity))
23632#define rb_define_protected_method(klass,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_protected_method((arity), (func))((klass), (mid), (func), (arity))
23633#define rb_define_private_method(klass,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_private_method((arity), (func))((klass), (mid), (func), (arity))
23634#define rb_define_module_function(mod,mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_module_function((arity), (func))((mod), (mid), (func), (arity))
23635#define rb_define_global_function(mid,func,arity) RBIMPL_ANYARGS_DISPATCH_rb_define_global_function((arity), (func))((mid), (func), (arity))
23636#define RUBY_METHOD_FUNC(func) RBIMPL_CAST((VALUE (*)(ANYARGS))(func))
23637#define RBIMPL_ARITHMETIC_H
23638#define RBIMPL_ARITHMETIC_CHAR_H
23639#define RBIMPL_ARITHMETIC_INT_H
23640#define RBIMPL_ARITHMETIC_FIXNUM_H
23641#define FIXABLE RB_FIXABLE
23642#define FIXNUM_MAX RUBY_FIXNUM_MAX
23643#define FIXNUM_MIN RUBY_FIXNUM_MIN
23644#define NEGFIXABLE RB_NEGFIXABLE
23645#define POSFIXABLE RB_POSFIXABLE
23646#define RB_POSFIXABLE(_) ((_) < RUBY_FIXNUM_MAX + 1)
23647#define RB_NEGFIXABLE(_) ((_) >= RUBY_FIXNUM_MIN)
23648#define RB_FIXABLE(_) (RB_POSFIXABLE(_) && RB_NEGFIXABLE(_))
23649#define RUBY_FIXNUM_MAX (LONG_MAX / 2)
23650#define RUBY_FIXNUM_MIN (LONG_MIN / 2)
23651#define RBIMPL_ARITHMETIC_INTPTR_T_H
23652#define rb_int_new rb_int2inum
23653#define rb_uint_new rb_uint2inum
23654#pragma GCC visibility push(default)
23655#pragma GCC visibility pop
23656#define RBIMPL_ARITHMETIC_LONG_H
23657#define RBIMPL_ATTR_ARTIFICIAL_H
23658#define RBIMPL_ATTR_ARTIFICIAL() __attribute__((__artificial__))
23659#define RBIMPL_ATTR_CONSTEXPR_H
23660#define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 0
23661#define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 0
23662#define RBIMPL_ATTR_CONSTEXPR(_)
23663#define RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(_) RBIMPL_ATTR_CONSTEXPR(_)
23664#define RBIMPL_SPECIAL_CONSTS_H
23665#define RBIMPL_ATTR_ENUM_EXTENSIBILITY_H
23666#define RBIMPL_ATTR_ENUM_EXTENSIBILITY(_)
23667#define USE_FLONUM 1
23668#define RTEST RB_TEST
23669#define FIXNUM_P RB_FIXNUM_P
23670#define IMMEDIATE_P RB_IMMEDIATE_P
23671#define NIL_P RB_NIL_P
23672#define SPECIAL_CONST_P RB_SPECIAL_CONST_P
23673#define STATIC_SYM_P RB_STATIC_SYM_P
23674#define Qfalse RUBY_Qfalse
23675#define Qnil RUBY_Qnil
23676#define Qtrue RUBY_Qtrue
23677#define Qundef RUBY_Qundef
23678#define FIXNUM_FLAG RUBY_FIXNUM_FLAG
23679#define FLONUM_FLAG RUBY_FLONUM_FLAG
23680#define FLONUM_MASK RUBY_FLONUM_MASK
23681#define FLONUM_P RB_FLONUM_P
23682#define IMMEDIATE_MASK RUBY_IMMEDIATE_MASK
23683#define SYMBOL_FLAG RUBY_SYMBOL_FLAG
23684#define RB_FIXNUM_P RB_FIXNUM_P
23685#define RB_FLONUM_P RB_FLONUM_P
23686#define RB_IMMEDIATE_P RB_IMMEDIATE_P
23687#define RB_NIL_P RB_NIL_P
23688#define RB_SPECIAL_CONST_P RB_SPECIAL_CONST_P
23689#define RB_STATIC_SYM_P RB_STATIC_SYM_P
23690#define RB_TEST RB_TEST
23691#define RUBY_Qfalse RBIMPL_CAST((VALUE)RUBY_Qfalse)
23692#define RUBY_Qtrue RBIMPL_CAST((VALUE)RUBY_Qtrue)
23693#define RUBY_Qnil RBIMPL_CAST((VALUE)RUBY_Qnil)
23694#define RUBY_Qundef RBIMPL_CAST((VALUE)RUBY_Qundef)
23695#define FIX2LONG RB_FIX2LONG
23696#define FIX2ULONG RB_FIX2ULONG
23697#define INT2FIX RB_INT2FIX
23698#define LONG2FIX RB_INT2FIX
23699#define LONG2NUM RB_LONG2NUM
23700#define NUM2LONG RB_NUM2LONG
23701#define NUM2ULONG RB_NUM2ULONG
23702#define RB_FIX2LONG rb_fix2long
23703#define RB_FIX2ULONG rb_fix2ulong
23704#define RB_LONG2FIX RB_INT2FIX
23705#define RB_LONG2NUM rb_long2num_inline
23706#define RB_NUM2LONG rb_num2long_inline
23707#define RB_NUM2ULONG rb_num2ulong_inline
23708#define RB_ULONG2NUM rb_ulong2num_inline
23709#define ULONG2NUM RB_ULONG2NUM
23710#define rb_fix_new RB_INT2FIX
23711#define rb_long2int rb_long2int_inline
23712#define RB_INT2FIX RB_INT2FIX
23713#pragma GCC visibility push(default)
23714#pragma GCC visibility pop
23716#define INT2FIX(i) __builtin_choose_expr( __builtin_constant_p(i), RBIMPL_CAST((VALUE)(i)) << 1 | RUBY_FIXNUM_FLAG, RB_INT2FIX(i))
23717#define RB_INT2NUM rb_int2num_inline
23718#define RB_NUM2INT rb_num2int_inline
23719#define RB_UINT2NUM rb_uint2num_inline
23720#define FIX2INT RB_FIX2INT
23721#define FIX2UINT RB_FIX2UINT
23722#define INT2NUM RB_INT2NUM
23723#define NUM2INT RB_NUM2INT
23724#define NUM2UINT RB_NUM2UINT
23725#define UINT2NUM RB_UINT2NUM
23726#define RB_FIX2INT RB_FIX2INT
23727#define RB_NUM2UINT RB_NUM2UINT
23728#define RB_FIX2UINT RB_FIX2UINT
23729#pragma GCC visibility push(default)
23730#pragma GCC visibility pop
23731#pragma GCC diagnostic push
23732#pragma GCC diagnostic ignored "-Wtype-limits"
23733#pragma GCC diagnostic pop
23734#define RBIMPL_RSTRING_H
23735#define RBIMPL_RBASIC_H
23736#define RBIMPL_ATTR_NOALIAS_H
23737#define RBIMPL_ATTR_NOALIAS()
23738#define RBASIC(obj) RBIMPL_CAST((struct RBasic *)(obj))
23739#define RBASIC_CLASS RBASIC_CLASS
23740#define RBIMPL_RVALUE_EMBED_LEN_MAX 3
23741#define RVALUE_EMBED_LEN_MAX RVALUE_EMBED_LEN_MAX
23742#define RBIMPL_EMBED_LEN_MAX_OF(T) RBIMPL_CAST((int)(sizeof(VALUE[RBIMPL_RVALUE_EMBED_LEN_MAX]) / (sizeof(T))))
23743#pragma GCC visibility push(default)
23744#pragma GCC visibility pop
23745#define RBIMPL_FL_TYPE_H
23746#define RBIMPL_ATTR_FLAG_ENUM_H
23747#define RBIMPL_ATTR_FLAG_ENUM()
23748#define RBIMPL_VALUE_TYPE_H
23749#define RBIMPL_CONSTANT_P_H
23750#define RBIMPL_CONSTANT_P(expr) __builtin_constant_p(expr)
23751#define RBIMPL_ERROR_H
23752#define RB_IO_WAIT_READABLE RB_IO_WAIT_READABLE
23753#define RB_IO_WAIT_WRITABLE RB_IO_WAIT_WRITABLE
23754#pragma GCC visibility push(default)
23755#define ruby_verbose (*rb_ruby_verbose_ptr())
23756#define ruby_debug (*rb_ruby_debug_ptr())
23757#pragma GCC visibility pop
23758#define T_ARRAY RUBY_T_ARRAY
23759#define T_BIGNUM RUBY_T_BIGNUM
23760#define T_CLASS RUBY_T_CLASS
23761#define T_COMPLEX RUBY_T_COMPLEX
23762#define T_DATA RUBY_T_DATA
23763#define T_FALSE RUBY_T_FALSE
23764#define T_FILE RUBY_T_FILE
23765#define T_FIXNUM RUBY_T_FIXNUM
23766#define T_FLOAT RUBY_T_FLOAT
23767#define T_HASH RUBY_T_HASH
23768#define T_ICLASS RUBY_T_ICLASS
23769#define T_IMEMO RUBY_T_IMEMO
23770#define T_MASK RUBY_T_MASK
23771#define T_MATCH RUBY_T_MATCH
23772#define T_MODULE RUBY_T_MODULE
23773#define T_MOVED RUBY_T_MOVED
23774#define T_NIL RUBY_T_NIL
23775#define T_NODE RUBY_T_NODE
23776#define T_NONE RUBY_T_NONE
23777#define T_OBJECT RUBY_T_OBJECT
23778#define T_RATIONAL RUBY_T_RATIONAL
23779#define T_REGEXP RUBY_T_REGEXP
23780#define T_STRING RUBY_T_STRING
23781#define T_STRUCT RUBY_T_STRUCT
23782#define T_SYMBOL RUBY_T_SYMBOL
23783#define T_TRUE RUBY_T_TRUE
23784#define T_UNDEF RUBY_T_UNDEF
23785#define T_ZOMBIE RUBY_T_ZOMBIE
23786#define BUILTIN_TYPE RB_BUILTIN_TYPE
23787#define DYNAMIC_SYM_P RB_DYNAMIC_SYM_P
23788#define RB_INTEGER_TYPE_P rb_integer_type_p
23789#define SYMBOL_P RB_SYMBOL_P
23790#define rb_type_p RB_TYPE_P
23791#define RB_BUILTIN_TYPE RB_BUILTIN_TYPE
23792#define RB_DYNAMIC_SYM_P RB_DYNAMIC_SYM_P
23793#define RB_FLOAT_TYPE_P RB_FLOAT_TYPE_P
23794#define RB_SYMBOL_P RB_SYMBOL_P
23795#define RB_TYPE_P RB_TYPE_P
23796#define Check_Type Check_Type
23797#define RBIMPL_ASSERT_TYPE(v,t) RBIMPL_ASSERT_OR_ASSUME(RB_TYPE_P((v), (t)))
23798#define TYPE(_) RBIMPL_CAST((int)rb_type(_))
23799#pragma GCC visibility push(default)
23800#pragma GCC visibility pop
23801#define RBIMPL_HAVE_ENUM_ATTRIBUTE 1
23802#define RBIMPL_WIDER_ENUM 1
23803#define FL_SINGLETON RBIMPL_CAST((VALUE)RUBY_FL_SINGLETON)
23804#define FL_WB_PROTECTED RBIMPL_CAST((VALUE)RUBY_FL_WB_PROTECTED)
23805#define FL_PROMOTED0 RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED0)
23806#define FL_PROMOTED1 RBIMPL_CAST((VALUE)RUBY_FL_PROMOTED1)
23807#define FL_FINALIZE RBIMPL_CAST((VALUE)RUBY_FL_FINALIZE)
23808#define FL_TAINT RBIMPL_CAST((VALUE)RUBY_FL_TAINT)
23809#define FL_SHAREABLE RBIMPL_CAST((VALUE)RUBY_FL_SHAREABLE)
23810#define FL_UNTRUSTED RBIMPL_CAST((VALUE)RUBY_FL_UNTRUSTED)
23811#define FL_SEEN_OBJ_ID RBIMPL_CAST((VALUE)RUBY_FL_SEEN_OBJ_ID)
23812#define FL_EXIVAR RBIMPL_CAST((VALUE)RUBY_FL_EXIVAR)
23813#define FL_FREEZE RBIMPL_CAST((VALUE)RUBY_FL_FREEZE)
23814#define FL_USHIFT RBIMPL_CAST((VALUE)RUBY_FL_USHIFT)
23815#define FL_USER0 RBIMPL_CAST((VALUE)RUBY_FL_USER0)
23816#define FL_USER1 RBIMPL_CAST((VALUE)RUBY_FL_USER1)
23817#define FL_USER2 RBIMPL_CAST((VALUE)RUBY_FL_USER2)
23818#define FL_USER3 RBIMPL_CAST((VALUE)RUBY_FL_USER3)
23819#define FL_USER4 RBIMPL_CAST((VALUE)RUBY_FL_USER4)
23820#define FL_USER5 RBIMPL_CAST((VALUE)RUBY_FL_USER5)
23821#define FL_USER6 RBIMPL_CAST((VALUE)RUBY_FL_USER6)
23822#define FL_USER7 RBIMPL_CAST((VALUE)RUBY_FL_USER7)
23823#define FL_USER8 RBIMPL_CAST((VALUE)RUBY_FL_USER8)
23824#define FL_USER9 RBIMPL_CAST((VALUE)RUBY_FL_USER9)
23825#define FL_USER10 RBIMPL_CAST((VALUE)RUBY_FL_USER10)
23826#define FL_USER11 RBIMPL_CAST((VALUE)RUBY_FL_USER11)
23827#define FL_USER12 RBIMPL_CAST((VALUE)RUBY_FL_USER12)
23828#define FL_USER13 RBIMPL_CAST((VALUE)RUBY_FL_USER13)
23829#define FL_USER14 RBIMPL_CAST((VALUE)RUBY_FL_USER14)
23830#define FL_USER15 RBIMPL_CAST((VALUE)RUBY_FL_USER15)
23831#define FL_USER16 RBIMPL_CAST((VALUE)RUBY_FL_USER16)
23832#define FL_USER17 RBIMPL_CAST((VALUE)RUBY_FL_USER17)
23833#define FL_USER18 RBIMPL_CAST((VALUE)RUBY_FL_USER18)
23834#define FL_USER19 RBIMPL_CAST((VALUE)(unsigned int)RUBY_FL_USER19)
23835#define ELTS_SHARED RUBY_ELTS_SHARED
23836#define RB_OBJ_FREEZE rb_obj_freeze_inline
23837#define RUBY_ELTS_SHARED RUBY_ELTS_SHARED
23838#define RB_FL_ABLE RB_FL_ABLE
23839#define RB_FL_ALL RB_FL_ALL
23840#define RB_FL_ALL_RAW RB_FL_ALL_RAW
23841#define RB_FL_ANY RB_FL_ANY
23842#define RB_FL_ANY_RAW RB_FL_ANY_RAW
23843#define RB_FL_REVERSE RB_FL_REVERSE
23844#define RB_FL_REVERSE_RAW RB_FL_REVERSE_RAW
23845#define RB_FL_SET RB_FL_SET
23846#define RB_FL_SET_RAW RB_FL_SET_RAW
23847#define RB_FL_TEST RB_FL_TEST
23848#define RB_FL_TEST_RAW RB_FL_TEST_RAW
23849#define RB_FL_UNSET RB_FL_UNSET
23850#define RB_FL_UNSET_RAW RB_FL_UNSET_RAW
23851#define RB_OBJ_FREEZE_RAW RB_OBJ_FREEZE_RAW
23852#define RB_OBJ_FROZEN RB_OBJ_FROZEN
23853#define RB_OBJ_FROZEN_RAW RB_OBJ_FROZEN_RAW
23854#define RB_OBJ_INFECT RB_OBJ_INFECT
23855#define RB_OBJ_INFECT_RAW RB_OBJ_INFECT_RAW
23856#define RB_OBJ_TAINT RB_OBJ_TAINT
23857#define RB_OBJ_TAINTABLE RB_OBJ_TAINTABLE
23858#define RB_OBJ_TAINTED RB_OBJ_TAINTED
23859#define RB_OBJ_TAINTED_RAW RB_OBJ_TAINTED_RAW
23860#define RB_OBJ_TAINT_RAW RB_OBJ_TAINT_RAW
23861#define RB_OBJ_UNTRUST RB_OBJ_TAINT
23862#define RB_OBJ_UNTRUSTED RB_OBJ_TAINTED
23863#define FL_ABLE RB_FL_ABLE
23864#define FL_ALL RB_FL_ALL
23865#define FL_ALL_RAW RB_FL_ALL_RAW
23866#define FL_ANY RB_FL_ANY
23867#define FL_ANY_RAW RB_FL_ANY_RAW
23868#define FL_REVERSE RB_FL_REVERSE
23869#define FL_REVERSE_RAW RB_FL_REVERSE_RAW
23870#define FL_SET RB_FL_SET
23871#define FL_SET_RAW RB_FL_SET_RAW
23872#define FL_TEST RB_FL_TEST
23873#define FL_TEST_RAW RB_FL_TEST_RAW
23874#define FL_UNSET RB_FL_UNSET
23875#define FL_UNSET_RAW RB_FL_UNSET_RAW
23876#define OBJ_FREEZE RB_OBJ_FREEZE
23877#define OBJ_FREEZE_RAW RB_OBJ_FREEZE_RAW
23878#define OBJ_FROZEN RB_OBJ_FROZEN
23879#define OBJ_FROZEN_RAW RB_OBJ_FROZEN_RAW
23880#define OBJ_INFECT RB_OBJ_INFECT
23881#define OBJ_INFECT_RAW RB_OBJ_INFECT_RAW
23882#define OBJ_TAINT RB_OBJ_TAINT
23883#define OBJ_TAINTABLE RB_OBJ_TAINTABLE
23884#define OBJ_TAINTED RB_OBJ_TAINTED
23885#define OBJ_TAINTED_RAW RB_OBJ_TAINTED_RAW
23886#define OBJ_TAINT_RAW RB_OBJ_TAINT_RAW
23887#define OBJ_UNTRUST RB_OBJ_UNTRUST
23888#define OBJ_UNTRUSTED RB_OBJ_UNTRUSTED
23889#define RBIMPL_FL_USER_N(n) RUBY_FL_USER ##n = (1<<(RUBY_FL_USHIFT+n))
23890#undef RBIMPL_FL_USER_N
23891#undef RBIMPL_WIDER_ENUM
23892#undef RBIMPL_HAVE_ENUM_ATTRIBUTE
23893#pragma GCC visibility push(default)
23894#pragma GCC visibility pop
23895#define RSTRING(obj) RBIMPL_CAST((struct RString *)(obj))
23896#define RSTRING_NOEMBED RSTRING_NOEMBED
23897#define RSTRING_EMBED_LEN_MASK RSTRING_EMBED_LEN_MASK
23898#define RSTRING_EMBED_LEN_SHIFT RSTRING_EMBED_LEN_SHIFT
23899#define RSTRING_EMBED_LEN_MAX RSTRING_EMBED_LEN_MAX
23900#define RSTRING_FSTR RSTRING_FSTR
23901#define RSTRING_EMBED_LEN RSTRING_EMBED_LEN
23902#define RSTRING_LEN RSTRING_LEN
23903#define RSTRING_LENINT RSTRING_LENINT
23904#define RSTRING_PTR RSTRING_PTR
23905#define RSTRING_END RSTRING_END
23906#define StringValue(v) rb_string_value(&(v))
23907#define StringValuePtr(v) rb_string_value_ptr(&(v))
23908#define StringValueCStr(v) rb_string_value_cstr(&(v))
23909#define SafeStringValue(v) StringValue(v)
23910#define ExportStringValue(v) do { StringValue(v); (v) = rb_str_export(v); } while (0)
23911#pragma GCC visibility push(default)
23912#define Check_SafeStr(v) rb_check_safe_str(RBIMPL_CAST((VALUE)(v)))
23913#pragma GCC visibility pop
23914#pragma GCC diagnostic push
23915#pragma GCC diagnostic pop
23916#define RSTRING_GETMEM(str,ptrvar,lenvar) __extension__ ({ struct RString rbimpl_str = rbimpl_rstring_getmem(str); (ptrvar) = rbimpl_str.as.heap.ptr; (lenvar) = rbimpl_str.as.heap.len; })
23917#define RB_NUM2CHR rb_num2char_inline
23918#define NUM2CHR RB_NUM2CHR
23919#define CHR2FIX RB_CHR2FIX
23920#define RB_CHR2FIX RB_CHR2FIX
23921#define RBIMPL_ARITHMETIC_DOUBLE_H
23922#define NUM2DBL rb_num2dbl
23923#define RFLOAT_VALUE rb_float_value
23924#define DBL2NUM rb_float_new
23925#pragma GCC visibility push(default)
23926#pragma GCC visibility pop
23927#define RBIMPL_ARITHMETIC_GID_T_H
23928#define RBIMPL_ARITHMETIC_LONG_LONG_H
23929#define RB_LL2NUM rb_ll2num_inline
23930#define RB_ULL2NUM rb_ull2num_inline
23931#define LL2NUM RB_LL2NUM
23932#define ULL2NUM RB_ULL2NUM
23933#define RB_NUM2LL rb_num2ll_inline
23934#define RB_NUM2ULL rb_num2ull_inline
23935#define NUM2LL RB_NUM2LL
23936#define NUM2ULL RB_NUM2ULL
23937#pragma GCC visibility push(default)
23938#pragma GCC visibility pop
23939#define RBIMPL_ARITHMETIC_MODE_T_H
23940#define RBIMPL_ARITHMETIC_OFF_T_H
23941#define RBIMPL_ARITHMETIC_PID_T_H
23942#define RBIMPL_ARITHMETIC_SHORT_H
23943#define RB_NUM2SHORT rb_num2short_inline
23944#define RB_NUM2USHORT rb_num2ushort
23945#define NUM2SHORT RB_NUM2SHORT
23946#define NUM2USHORT RB_NUM2USHORT
23947#define USHORT2NUM RB_INT2FIX
23948#define RB_FIX2SHORT rb_fix2short
23949#define FIX2SHORT RB_FIX2SHORT
23950#pragma GCC visibility push(default)
23951#pragma GCC visibility pop
23952#define RBIMPL_ARITHMETIC_SIZE_T_H
23953#define RB_SIZE2NUM RB_ULL2NUM
23954#define RB_SSIZE2NUM RB_LL2NUM
23955#define RB_NUM2SIZE RB_NUM2ULL
23956#define RB_NUM2SSIZE RB_NUM2LL
23957#define NUM2SIZET RB_NUM2SIZE
23958#define SIZET2NUM RB_SIZE2NUM
23959#define NUM2SSIZET RB_NUM2SSIZE
23960#define SSIZET2NUM RB_SSIZE2NUM
23961#define RBIMPL_ARITHMERIC_ST_DATA_T_H
23963#pragma GCC visibility push(default)
23964#define ST_DATA_T_DEFINED
23965#define MAX_ST_INDEX_VAL (~(st_index_t) 0)
23966#define SIZEOF_ST_INDEX_T SIZEOF_VOIDP
23967#define ST_INDEX_BITS (SIZEOF_ST_INDEX_T * CHAR_BIT)
23968#define ST_DATA_COMPATIBLE_P(type) __builtin_choose_expr(__builtin_types_compatible_p(type, st_data_t), 1, 0)
23969#define st_is_member(table,key) st_lookup((table),(key),(st_data_t *)0)
23970#define st_init_table rb_st_init_table
23971#define st_init_table_with_size rb_st_init_table_with_size
23972#define st_init_numtable rb_st_init_numtable
23973#define st_init_numtable_with_size rb_st_init_numtable_with_size
23974#define st_init_strtable rb_st_init_strtable
23975#define st_init_strtable_with_size rb_st_init_strtable_with_size
23976#define st_init_strcasetable rb_st_init_strcasetable
23977#define st_init_strcasetable_with_size rb_st_init_strcasetable_with_size
23978#define st_delete rb_st_delete
23979#define st_delete_safe rb_st_delete_safe
23980#define st_shift rb_st_shift
23981#define st_insert rb_st_insert
23982#define st_insert2 rb_st_insert2
23983#define st_lookup rb_st_lookup
23984#define st_get_key rb_st_get_key
23985#define st_update rb_st_update
23986#define st_foreach_with_replace rb_st_foreach_with_replace
23987#define st_foreach rb_st_foreach
23988#define st_foreach_check rb_st_foreach_check
23989#define st_keys rb_st_keys
23990#define st_keys_check rb_st_keys_check
23991#define st_values rb_st_values
23992#define st_values_check rb_st_values_check
23993#define st_add_direct rb_st_add_direct
23994#define st_free_table rb_st_free_table
23995#define st_cleanup_safe rb_st_cleanup_safe
23996#define st_clear rb_st_clear
23997#define st_copy rb_st_copy
23998#define st_numcmp rb_st_numcmp
23999#define st_numhash rb_st_numhash
24000#define st_locale_insensitive_strcasecmp rb_st_locale_insensitive_strcasecmp
24001#define st_locale_insensitive_strncasecmp rb_st_locale_insensitive_strncasecmp
24002#define st_strcasecmp rb_st_locale_insensitive_strcasecmp
24003#define st_strncasecmp rb_st_locale_insensitive_strncasecmp
24004#define st_memsize rb_st_memsize
24005#define st_hash rb_st_hash
24006#define st_hash_uint32 rb_st_hash_uint32
24007#define st_hash_uint rb_st_hash_uint
24008#define st_hash_end rb_st_hash_end
24009#define st_hash_start(h) ((st_index_t)(h))
24010#pragma GCC visibility pop
24011#define ST2FIX RB_ST2FIX
24012#define RB_ST2FIX RB_ST2FIX
24013#define RBIMPL_ARITHMETIC_UID_T_H
24014#define RBIMPL_CORE_H
24015#define RBIMPL_RARRAY_H
24016#define RBIMPL_RGENGC_H
24018#define USE_RGENGC 1
24019#define USE_RINCGC 1
24020#define USE_RGENGC_LOGGING_WB_UNPROTECT 0
24021#define RGENGC_WB_PROTECTED_ARRAY 1
24022#define RGENGC_WB_PROTECTED_HASH 1
24023#define RGENGC_WB_PROTECTED_STRUCT 1
24024#define RGENGC_WB_PROTECTED_STRING 1
24025#define RGENGC_WB_PROTECTED_OBJECT 1
24026#define RGENGC_WB_PROTECTED_REGEXP 1
24027#define RGENGC_WB_PROTECTED_CLASS 1
24028#define RGENGC_WB_PROTECTED_FLOAT 1
24029#define RGENGC_WB_PROTECTED_COMPLEX 1
24030#define RGENGC_WB_PROTECTED_RATIONAL 1
24031#define RGENGC_WB_PROTECTED_BIGNUM 1
24032#define RGENGC_WB_PROTECTED_NODE_CREF 1
24033#define RB_OBJ_WRITE(old,slot,young) RBIMPL_CAST(rb_obj_write((VALUE)(old), (VALUE *)(slot), (VALUE)(young), __FILE__, __LINE__))
24034#define RB_OBJ_WRITTEN(old,oldv,young) RBIMPL_CAST(rb_obj_written((VALUE)(old), (VALUE)(oldv), (VALUE)(young), __FILE__, __LINE__))
24035#define OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW
24036#define OBJ_PROMOTED RB_OBJ_PROMOTED
24037#define OBJ_WB_UNPROTECT RB_OBJ_WB_UNPROTECT
24038#define RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__)
24039#define RB_OBJ_WB_UNPROTECT_FOR(type,obj) (RGENGC_WB_PROTECTED_ ##type ? OBJ_WB_UNPROTECT(obj) : obj)
24040#define RGENGC_LOGGING_WB_UNPROTECT rb_gc_unprotect_logging
24041#define RB_OBJ_PROMOTED_RAW RB_OBJ_PROMOTED_RAW
24042#define RB_OBJ_PROMOTED RB_OBJ_PROMOTED
24043#pragma GCC visibility push(default)
24044#pragma GCC visibility pop
24045#define USE_TRANSIENT_HEAP 1
24046#define RARRAY(obj) RBIMPL_CAST((struct RArray *)(obj))
24047#define RARRAY_EMBED_FLAG RARRAY_EMBED_FLAG
24048#define RARRAY_EMBED_LEN_MASK RARRAY_EMBED_LEN_MASK
24049#define RARRAY_EMBED_LEN_MAX RARRAY_EMBED_LEN_MAX
24050#define RARRAY_EMBED_LEN_SHIFT RARRAY_EMBED_LEN_SHIFT
24051#define RARRAY_TRANSIENT_FLAG RARRAY_TRANSIENT_FLAG
24052#define RARRAY_LEN rb_array_len
24053#define RARRAY_CONST_PTR rb_array_const_ptr
24054#define RARRAY_CONST_PTR_TRANSIENT rb_array_const_ptr_transient
24055#define FIX_CONST_VALUE_PTR(x) (x)
24056#define RARRAY_EMBED_LEN RARRAY_EMBED_LEN
24057#define RARRAY_LENINT RARRAY_LENINT
24058#define RARRAY_TRANSIENT_P RARRAY_TRANSIENT_P
24059#define RARRAY_ASET RARRAY_ASET
24060#define RARRAY_PTR RARRAY_PTR
24061#pragma GCC visibility push(default)
24062#pragma GCC visibility pop
24063#define RBIMPL_RARRAY_STMT(flag,ary,var,expr) do { RBIMPL_ASSERT_TYPE((ary), RUBY_T_ARRAY); const VALUE rbimpl_ary = (ary); VALUE *var = rb_array_ptr_use_start(rbimpl_ary, (flag)); expr; rb_array_ptr_use_end(rbimpl_ary, (flag)); } while (0)
24064#define RARRAY_PTR_USE_START(a) rb_array_ptr_use_start(a, 0)
24065#define RARRAY_PTR_USE_END(a) rb_array_ptr_use_end(a, 0)
24066#define RARRAY_PTR_USE(ary,ptr_name,expr) RBIMPL_RARRAY_STMT(0, ary, ptr_name, expr)
24067#define RARRAY_PTR_USE_START_TRANSIENT(a) rb_array_ptr_use_start(a, 1)
24068#define RARRAY_PTR_USE_END_TRANSIENT(a) rb_array_ptr_use_end(a, 1)
24069#define RARRAY_PTR_USE_TRANSIENT(ary,ptr_name,expr) RBIMPL_RARRAY_STMT(1, ary, ptr_name, expr)
24070#define RARRAY_AREF(a,i) RARRAY_CONST_PTR_TRANSIENT(a)[i]
24071#define RBIMPL_RBIGNUM_H
24072#define RBIGNUM_SIGN rb_big_sign
24073#define RBIGNUM_POSITIVE_P RBIGNUM_POSITIVE_P
24074#define RBIGNUM_NEGATIVE_P RBIGNUM_NEGATIVE_P
24075#pragma GCC visibility push(default)
24076#pragma GCC visibility pop
24077#define RBIMPL_RCLASS_H
24078#define RMODULE_IS_OVERLAID RMODULE_IS_OVERLAID
24079#define RMODULE_IS_REFINEMENT RMODULE_IS_REFINEMENT
24080#define RMODULE_INCLUDED_INTO_REFINEMENT RMODULE_INCLUDED_INTO_REFINEMENT
24081#define RCLASS(obj) RBIMPL_CAST((struct RClass *)(obj))
24082#define RMODULE RCLASS
24083#define RCLASS_SUPER rb_class_get_superclass
24084#pragma GCC visibility push(default)
24085#pragma GCC visibility pop
24086#define RBIMPL_RDATA_H
24087#define RUBY_UNTYPED_DATA_WARNING 1
24088#define RBIMPL_DATA_FUNC(f) RBIMPL_CAST((void (*)(void *))(f))
24089#define RBIMPL_ATTRSET_UNTYPED_DATA_FUNC() RBIMPL_ATTR_WARNING(("untyped Data is unsafe; use TypedData instead")) RBIMPL_ATTR_DEPRECATED(("by TypedData"))
24090#define RBIMPL_MACRO_SELECT(x,y) x ## y
24091#define RUBY_MACRO_SELECT(x,y) RBIMPL_MACRO_SELECT(x, y)
24092#define RDATA(obj) RBIMPL_CAST((struct RData *)(obj))
24093#define DATA_PTR(obj) RDATA(obj)->data
24094#define RUBY_DEFAULT_FREE RBIMPL_DATA_FUNC(-1)
24095#define RUBY_NEVER_FREE RBIMPL_DATA_FUNC(0)
24096#define RUBY_UNTYPED_DATA_FUNC(f) f RBIMPL_ATTRSET_UNTYPED_DATA_FUNC()
24097#pragma GCC visibility push(default)
24098#pragma GCC visibility pop
24099#define Data_Wrap_Struct(klass,mark,free,sval) rb_data_object_wrap( (klass), (sval), RBIMPL_DATA_FUNC(mark), RBIMPL_DATA_FUNC(free))
24100#define Data_Make_Struct0(result,klass,type,size,mark,free,sval) VALUE result = rb_data_object_zalloc( (klass), (size), RBIMPL_DATA_FUNC(mark), RBIMPL_DATA_FUNC(free)); (sval) = RBIMPL_CAST((type *)DATA_PTR(result)); RBIMPL_CAST( (void)(sval))
24101#define Data_Make_Struct(klass,type,mark,free,sval) RB_GNUC_EXTENSION({ Data_Make_Struct0( data_struct_obj, klass, type, sizeof(type), mark, free, sval); data_struct_obj; })
24102#define Data_Get_Struct(obj,type,sval) ((sval) = RBIMPL_CAST((type*)rb_data_object_get(obj)))
24103#define rb_data_object_wrap_warning(klass,ptr,mark,free) RB_GNUC_EXTENSION( __builtin_choose_expr( __builtin_constant_p(klass) && !(klass), rb_data_object_wrap(klass, ptr, mark, free), (rb_data_object_wrap_warning)(klass, ptr, mark, free)))
24104#define rb_cData rb_cData()
24105#define rb_data_object_wrap_0 rb_data_object_wrap
24106#define rb_data_object_wrap_1 rb_data_object_wrap_warning
24107#define rb_data_object_wrap_2 rb_data_object_wrap_
24108#define rb_data_object_wrap RUBY_MACRO_SELECT(rb_data_object_wrap_2, RUBY_UNTYPED_DATA_WARNING)
24109#define rb_data_object_get_0 rb_data_object_get
24110#define rb_data_object_get_1 rb_data_object_get_warning
24111#define rb_data_object_get_2 rb_data_object_get_
24112#define rb_data_object_get RUBY_MACRO_SELECT(rb_data_object_get_2, RUBY_UNTYPED_DATA_WARNING)
24113#define rb_data_object_make_0 rb_data_object_make
24114#define rb_data_object_make_1 rb_data_object_make_warning
24115#define rb_data_object_make_2 rb_data_object_make_
24116#define rb_data_object_make RUBY_MACRO_SELECT(rb_data_object_make_2, RUBY_UNTYPED_DATA_WARNING)
24117#define RBIMPL_RFILE_H
24118#define RFILE(obj) RBIMPL_CAST((struct RFile *)(obj))
24119#define RBIMPL_RHASH_H
24120#define RHASH_TBL(h) rb_hash_tbl(h, __FILE__, __LINE__)
24121#define RHASH_ITER_LEV(h) rb_hash_iter_lev(h)
24122#define RHASH_IFNONE(h) rb_hash_ifnone(h)
24123#define RHASH_SIZE(h) rb_hash_size_num(h)
24124#define RHASH_EMPTY_P(h) (RHASH_SIZE(h) == 0)
24125#define RHASH_SET_IFNONE(h,ifnone) rb_hash_set_ifnone((VALUE)h, ifnone)
24126#pragma GCC visibility push(default)
24127#pragma GCC visibility pop
24128#define RBIMPL_ROBJECT_H
24129#define ROBJECT(obj) RBIMPL_CAST((struct RObject *)(obj))
24130#define ROBJECT_EMBED_LEN_MAX ROBJECT_EMBED_LEN_MAX
24131#define ROBJECT_EMBED ROBJECT_EMBED
24132#define ROBJECT_NUMIV ROBJECT_NUMIV
24133#define ROBJECT_IVPTR ROBJECT_IVPTR
24134#define ROBJECT_IV_INDEX_TBL ROBJECT_IV_INDEX_TBL
24135#define RBIMPL_RREGEXP_H
24136#define RREGEXP(obj) RBIMPL_CAST((struct RRegexp *)(obj))
24137#define RREGEXP_PTR(obj) (RREGEXP(obj)->ptr)
24138#define RREGEXP_SRC RREGEXP_SRC
24139#define RREGEXP_SRC_PTR RREGEXP_SRC_PTR
24140#define RREGEXP_SRC_LEN RREGEXP_SRC_LEN
24141#define RREGEXP_SRC_END RREGEXP_SRC_END
24142#define RBIMPL_RSTRUCT_H
24143#define RSTRUCT_PTR(st) rb_struct_ptr(st)
24144#define RSTRUCT_LEN RSTRUCT_LEN
24145#define RSTRUCT_SET RSTRUCT_SET
24146#define RSTRUCT_GET RSTRUCT_GET
24147#pragma GCC visibility push(default)
24148#pragma GCC visibility pop
24149#define RBIMPL_RTYPEDDATA_H
24150#define HAVE_TYPE_RB_DATA_TYPE_T 1
24151#define HAVE_RB_DATA_TYPE_T_FUNCTION 1
24152#define HAVE_RB_DATA_TYPE_T_PARENT 1
24153#define RUBY_TYPED_DEFAULT_FREE RUBY_DEFAULT_FREE
24154#define RUBY_TYPED_NEVER_FREE RUBY_NEVER_FREE
24155#define RTYPEDDATA(obj) RBIMPL_CAST((struct RTypedData *)(obj))
24156#define RTYPEDDATA_DATA(v) (RTYPEDDATA(v)->data)
24157#define Check_TypedStruct(v,t) rb_check_typeddata(RBIMPL_CAST((VALUE)(v)), (t))
24158#define RTYPEDDATA_P RTYPEDDATA_P
24159#define RTYPEDDATA_TYPE RTYPEDDATA_TYPE
24160#define RUBY_TYPED_FREE_IMMEDIATELY RUBY_TYPED_FREE_IMMEDIATELY
24161#define RUBY_TYPED_FROZEN_SHAREABLE RUBY_TYPED_FROZEN_SHAREABLE
24162#define RUBY_TYPED_WB_PROTECTED RUBY_TYPED_WB_PROTECTED
24163#define RUBY_TYPED_PROMOTED1 RUBY_TYPED_PROMOTED1
24164#pragma GCC visibility push(default)
24165#pragma GCC visibility pop
24166#define TypedData_Wrap_Struct(klass,data_type,sval) rb_data_typed_object_wrap((klass),(sval),(data_type))
24167#define TypedData_Make_Struct0(result,klass,type,size,data_type,sval) VALUE result = rb_data_typed_object_zalloc(klass, size, data_type); (sval) = RBIMPL_CAST((type *)RTYPEDDATA_DATA(result)); RBIMPL_CAST( (void)(sval))
24168#define TypedData_Make_Struct(klass,type,data_type,sval) RB_GNUC_EXTENSION({ TypedData_Make_Struct0( data_struct_obj, klass, type, sizeof(type), data_type, sval); data_struct_obj; })
24169#define TypedData_Get_Struct(obj,type,data_type,sval) ((sval) = RBIMPL_CAST((type *)rb_check_typeddata((obj), (data_type))))
24170#define RBIMPL_CTYPE_H
24172#define _ISbit(bit) ((bit) < 8 ? ((1 << (bit)) << 8) : ((1 << (bit)) >> 8))
24173#define __isctype(c,type) ((*__ctype_b_loc ())[(int) (c)] & (unsigned short int) type)
24174#define __isascii(c) (((c) & ~0x7f) == 0)
24175#define __toascii(c) ((c) & 0x7f)
24176#define __exctype(name) extern int name (int) __THROW
24177#define __tobody(c,f,a,args) (__extension__ ({ int __res; if (sizeof (c) > 1) { if (__builtin_constant_p (c)) { int __c = (c); __res = __c < -128 || __c > 255 ? __c : (a)[__c]; } else __res = f args; } else __res = (a)[(int) (c)]; __res; }))
24178#define isalnum(c) __isctype((c), _ISalnum)
24179#define isalpha(c) __isctype((c), _ISalpha)
24180#define iscntrl(c) __isctype((c), _IScntrl)
24181#define isdigit(c) __isctype((c), _ISdigit)
24182#define islower(c) __isctype((c), _ISlower)
24183#define isgraph(c) __isctype((c), _ISgraph)
24184#define isprint(c) __isctype((c), _ISprint)
24185#define ispunct(c) __isctype((c), _ISpunct)
24186#define isspace(c) __isctype((c), _ISspace)
24187#define isupper(c) __isctype((c), _ISupper)
24188#define isxdigit(c) __isctype((c), _ISxdigit)
24189#define isblank(c) __isctype((c), _ISblank)
24190#define tolower(c) __tobody (c, tolower, *__ctype_tolower_loc (), (c))
24191#define toupper(c) __tobody (c, toupper, *__ctype_toupper_loc (), (c))
24192#define isascii(c) __isascii (c)
24193#define toascii(c) __toascii (c)
24194#define _tolower(c) ((int) (*__ctype_tolower_loc ())[(int) (c)])
24195#define _toupper(c) ((int) (*__ctype_toupper_loc ())[(int) (c)])
24196#define __isctype_l(c,type,locale) ((locale)->__ctype_b[(int) (c)] & (unsigned short int) type)
24197#define __exctype_l(name) extern int name (int, locale_t) __THROW
24198#define __tolower_l(c,locale) __tobody (c, __tolower_l, (locale)->__ctype_tolower, (c, locale))
24199#define __toupper_l(c,locale) __tobody (c, __toupper_l, (locale)->__ctype_toupper, (c, locale))
24200#define tolower_l(c,locale) __tolower_l ((c), (locale))
24201#define toupper_l(c,locale) __toupper_l ((c), (locale))
24202#define __isalnum_l(c,l) __isctype_l((c), _ISalnum, (l))
24203#define __isalpha_l(c,l) __isctype_l((c), _ISalpha, (l))
24204#define __iscntrl_l(c,l) __isctype_l((c), _IScntrl, (l))
24205#define __isdigit_l(c,l) __isctype_l((c), _ISdigit, (l))
24206#define __islower_l(c,l) __isctype_l((c), _ISlower, (l))
24207#define __isgraph_l(c,l) __isctype_l((c), _ISgraph, (l))
24208#define __isprint_l(c,l) __isctype_l((c), _ISprint, (l))
24209#define __ispunct_l(c,l) __isctype_l((c), _ISpunct, (l))
24210#define __isspace_l(c,l) __isctype_l((c), _ISspace, (l))
24211#define __isupper_l(c,l) __isctype_l((c), _ISupper, (l))
24212#define __isxdigit_l(c,l) __isctype_l((c), _ISxdigit, (l))
24213#define __isblank_l(c,l) __isctype_l((c), _ISblank, (l))
24214#define __isascii_l(c,l) ((l), __isascii (c))
24215#define __toascii_l(c,l) ((l), __toascii (c))
24216#define isalnum_l(c,l) __isalnum_l ((c), (l))
24217#define isalpha_l(c,l) __isalpha_l ((c), (l))
24218#define iscntrl_l(c,l) __iscntrl_l ((c), (l))
24219#define isdigit_l(c,l) __isdigit_l ((c), (l))
24220#define islower_l(c,l) __islower_l ((c), (l))
24221#define isgraph_l(c,l) __isgraph_l ((c), (l))
24222#define isprint_l(c,l) __isprint_l ((c), (l))
24223#define ispunct_l(c,l) __ispunct_l ((c), (l))
24224#define isspace_l(c,l) __isspace_l ((c), (l))
24225#define isupper_l(c,l) __isupper_l ((c), (l))
24226#define isxdigit_l(c,l) __isxdigit_l ((c), (l))
24227#define isblank_l(c,l) __isblank_l ((c), (l))
24228#define isascii_l(c,l) __isascii_l ((c), (l))
24229#define toascii_l(c,l) __toascii_l ((c), (l))
24230#define ISASCII rb_isascii
24231#define ISPRINT rb_isprint
24232#define ISGRAPH rb_isgraph
24233#define ISSPACE rb_isspace
24234#define ISUPPER rb_isupper
24235#define ISLOWER rb_islower
24236#define ISALNUM rb_isalnum
24237#define ISALPHA rb_isalpha
24238#define ISDIGIT rb_isdigit
24239#define ISXDIGIT rb_isxdigit
24240#define ISBLANK rb_isblank
24241#define ISCNTRL rb_iscntrl
24242#define ISPUNCT rb_ispunct
24243#define TOUPPER rb_toupper
24244#define TOLOWER rb_tolower
24245#define STRCASECMP st_locale_insensitive_strcasecmp
24246#define STRNCASECMP st_locale_insensitive_strncasecmp
24247#define STRTOUL ruby_strtoul
24248#pragma GCC visibility push(default)
24249#pragma GCC visibility pop
24250#define RBIMPL_EVAL_H
24251#pragma GCC visibility push(default)
24252#define rb_funcall2 rb_funcallv
24253#define rb_funcall3 rb_funcallv_public
24254#pragma GCC visibility pop
24255#define RBIMPL_EVENT_H
24256#define RUBY_EVENT_NONE 0x0000
24257#define RUBY_EVENT_LINE 0x0001
24258#define RUBY_EVENT_CLASS 0x0002
24259#define RUBY_EVENT_END 0x0004
24260#define RUBY_EVENT_CALL 0x0008
24261#define RUBY_EVENT_RETURN 0x0010
24262#define RUBY_EVENT_C_CALL 0x0020
24263#define RUBY_EVENT_C_RETURN 0x0040
24264#define RUBY_EVENT_RAISE 0x0080
24265#define RUBY_EVENT_ALL 0x00ff
24266#define RUBY_EVENT_B_CALL 0x0100
24267#define RUBY_EVENT_B_RETURN 0x0200
24268#define RUBY_EVENT_THREAD_BEGIN 0x0400
24269#define RUBY_EVENT_THREAD_END 0x0800
24270#define RUBY_EVENT_FIBER_SWITCH 0x1000
24271#define RUBY_EVENT_SCRIPT_COMPILED 0x2000
24272#define RUBY_EVENT_TRACEPOINT_ALL 0xffff
24273#define RUBY_EVENT_RESERVED_FOR_INTERNAL_USE 0x030000
24274#define RUBY_INTERNAL_EVENT_SWITCH 0x040000
24275#define RUBY_EVENT_SWITCH 0x040000
24276#define RUBY_INTERNAL_EVENT_NEWOBJ 0x100000
24277#define RUBY_INTERNAL_EVENT_FREEOBJ 0x200000
24278#define RUBY_INTERNAL_EVENT_GC_START 0x400000
24279#define RUBY_INTERNAL_EVENT_GC_END_MARK 0x800000
24280#define RUBY_INTERNAL_EVENT_GC_END_SWEEP 0x1000000
24281#define RUBY_INTERNAL_EVENT_GC_ENTER 0x2000000
24282#define RUBY_INTERNAL_EVENT_GC_EXIT 0x4000000
24283#define RUBY_INTERNAL_EVENT_OBJSPACE_MASK 0x7f00000
24284#define RUBY_INTERNAL_EVENT_MASK 0xffff0000
24285#define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1
24286#pragma GCC visibility push(default)
24287#pragma GCC visibility pop
24289#pragma GCC visibility push(default)
24290#pragma GCC visibility pop
24291#define RBIMPL_GLOB_H
24292#pragma GCC visibility push(default)
24293#pragma GCC visibility pop
24294#define RBIMPL_GLOBALS_H
24295#pragma GCC visibility push(default)
24296#define RUBY_INTEGER_UNIFICATION 1
24297#define CLASS_OF rb_class_of
24298#pragma GCC visibility pop
24299#define RBIMPL_INTERPRETER_H
24300#pragma GCC visibility push(default)
24301#define RUBY_INIT_STACK VALUE variable_in_this_stack_frame; ruby_init_stack(&variable_in_this_stack_frame);
24302#pragma GCC visibility pop
24303#define RBIMPL_ITERATOR_H
24304#pragma GCC visibility push(default)
24305#define RB_BLOCK_CALL_FUNC_STRICT 1
24306#define RUBY_BLOCK_CALL_FUNC_TAKES_BLOCKARG 1
24307#define RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg,callback_arg) VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg
24308#pragma GCC visibility pop
24309#define RBIMPL_MEMORY_H
24310#define DSIZE_T uint128_t
24311#define RUBY_ALLOCV_LIMIT 1024
24312#define RB_GC_GUARD(v) (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(v); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }))
24313#define RB_ALLOC_N(type,n) RBIMPL_CAST((type *)ruby_xmalloc2((n), sizeof(type)))
24314#define RB_ALLOC(type) RBIMPL_CAST((type *)ruby_xmalloc(sizeof(type)))
24315#define RB_ZALLOC_N(type,n) RBIMPL_CAST((type *)ruby_xcalloc((n), sizeof(type)))
24316#define RB_ZALLOC(type) (RB_ZALLOC_N(type, 1))
24317#define RB_REALLOC_N(var,type,n) ((var) = RBIMPL_CAST((type *)ruby_xrealloc2((void *)(var), (n), sizeof(type))))
24318#define ALLOCA_N(type,n) RBIMPL_CAST((type *)alloca(rbimpl_size_mul_or_raise(sizeof(type), (n))))
24319#define RB_ALLOCV(v,n) ((n) < RUBY_ALLOCV_LIMIT ? ((v) = 0, alloca(n)) : rb_alloc_tmp_buffer(&(v), (n)))
24320#define RB_ALLOCV_N(type,v,n) RBIMPL_CAST((type *) (((size_t)(n) < RUBY_ALLOCV_LIMIT / sizeof(type)) ? ((v) = 0, alloca((n) * sizeof(type))) : rb_alloc_tmp_buffer2(&(v), (n), sizeof(type))))
24321#define RB_ALLOCV_END(v) rb_free_tmp_buffer(&(v))
24322#define MEMZERO(p,type,n) memset((p), 0, rbimpl_size_mul_or_raise(sizeof(type), (n)))
24323#define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), rbimpl_size_mul_or_raise(sizeof(type), (n)))
24324#define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), rbimpl_size_mul_or_raise(sizeof(type), (n)))
24325#define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), rbimpl_size_mul_or_raise(sizeof(type), (n)))
24326#define ALLOC_N RB_ALLOC_N
24327#define ALLOC RB_ALLOC
24328#define ZALLOC_N RB_ZALLOC_N
24329#define ZALLOC RB_ZALLOC
24330#define REALLOC_N RB_REALLOC_N
24331#define ALLOCV RB_ALLOCV
24332#define ALLOCV_N RB_ALLOCV_N
24333#define ALLOCV_END RB_ALLOCV_END
24334#pragma GCC visibility push(default)
24335#pragma GCC visibility pop
24336#pragma GCC visibility push(default)
24337#pragma GCC visibility pop
24339#define memcpy ruby_nonempty_memcpy
24340#define RBIMPL_MODULE_H
24341#pragma GCC visibility push(default)
24342#pragma GCC visibility pop
24343#define RBIMPL_NEWOBJ_H
24344#define RB_NEWOBJ(obj,type) type *(obj) = RBIMPL_CAST((type *)rb_newobj())
24345#define RB_NEWOBJ_OF(obj,type,klass,flags) type *(obj) = RBIMPL_CAST((type *)rb_newobj_of(klass, flags))
24346#define NEWOBJ RB_NEWOBJ
24347#define NEWOBJ_OF RB_NEWOBJ_OF
24348#define OBJSETUP rb_obj_setup
24349#define CLONESETUP rb_clone_setup
24350#define DUPSETUP rb_dup_setup
24351#pragma GCC visibility push(default)
24352#pragma GCC visibility pop
24353#define RBIMPL_SCAN_ARGS_H
24354#define RBIMPL_ATTR_DIAGNOSE_IF_H
24355#define RBIMPL_ATTR_DIAGNOSE_IF(_,__,___)
24356#define RBIMPL_INTERN_ARRAY_H
24357#pragma GCC visibility push(default)
24358#define rb_ary_new2 rb_ary_new_capa
24359#define rb_ary_new3 rb_ary_new_from_args
24360#define rb_ary_new4 rb_ary_new_from_values
24361#pragma GCC visibility pop
24362#define RBIMPL_INTERN_ERROR_H
24363#define UNLIMITED_ARGUMENTS (-1)
24364#define rb_exc_new2 rb_exc_new_cstr
24365#define rb_exc_new3 rb_exc_new_str
24366#define rb_check_trusted rb_check_trusted
24367#define rb_check_trusted_inline rb_check_trusted
24368#define rb_check_arity rb_check_arity
24369#pragma GCC visibility push(default)
24370#pragma GCC visibility pop
24371#define rb_check_frozen_internal(obj) do { VALUE frozen_obj = (obj); if (RB_UNLIKELY(RB_OBJ_FROZEN(frozen_obj))) { rb_error_frozen_object(frozen_obj); } } while (0)
24372#define rb_check_frozen rb_check_frozen_inline
24373#define RBIMPL_INTERN_HASH_H
24374#pragma GCC visibility push(default)
24375#define st_foreach_safe rb_st_foreach_safe
24376#pragma GCC visibility pop
24377#define RBIMPL_INTERN_PROC_H
24378#pragma GCC visibility push(default)
24379#pragma GCC visibility pop
24380#define RB_SCAN_ARGS_PASS_CALLED_KEYWORDS 0
24381#define RB_SCAN_ARGS_KEYWORDS 1
24382#define RB_SCAN_ARGS_LAST_HASH_KEYWORDS 3
24383#define RB_NO_KEYWORDS 0
24384#define RB_PASS_KEYWORDS 1
24385#define RB_PASS_CALLED_KEYWORDS rb_keyword_given_p()
24386#define HAVE_RB_SCAN_ARGS_OPTIONAL_HASH 1
24387#pragma GCC visibility push(default)
24388#pragma GCC visibility pop
24389#define rb_scan_args_isdigit(c) (RBIMPL_CAST((unsigned char)((c)-'0'))<10)
24390#define rb_scan_args_count_end(fmt,ofs,vari) ((fmt)[ofs] ? -1 : (vari))
24391#define rb_scan_args_count_block(fmt,ofs,vari) ((fmt)[ofs]!='&' ? rb_scan_args_count_end(fmt, ofs, vari) : rb_scan_args_count_end(fmt, (ofs)+1, (vari)+1))
24392#define rb_scan_args_count_hash(fmt,ofs,vari) ((fmt)[ofs]!=':' ? rb_scan_args_count_block(fmt, ofs, vari) : rb_scan_args_count_block(fmt, (ofs)+1, (vari)+1))
24393#define rb_scan_args_count_trail(fmt,ofs,vari) (!rb_scan_args_isdigit((fmt)[ofs]) ? rb_scan_args_count_hash(fmt, ofs, vari) : rb_scan_args_count_hash(fmt, (ofs)+1, (vari)+((fmt)[ofs]-'0')))
24394#define rb_scan_args_count_var(fmt,ofs,vari) ((fmt)[ofs]!='*' ? rb_scan_args_count_trail(fmt, ofs, vari) : rb_scan_args_count_trail(fmt, (ofs)+1, (vari)+1))
24395#define rb_scan_args_count_opt(fmt,ofs,vari) (!rb_scan_args_isdigit((fmt)[ofs]) ? rb_scan_args_count_var(fmt, ofs, vari) : rb_scan_args_count_var(fmt, (ofs)+1, (vari)+(fmt)[ofs]-'0'))
24396#define rb_scan_args_count_lead(fmt,ofs,vari) (!rb_scan_args_isdigit((fmt)[ofs]) ? rb_scan_args_count_var(fmt, ofs, vari) : rb_scan_args_count_opt(fmt, (ofs)+1, (vari)+(fmt)[ofs]-'0'))
24397#define rb_scan_args_count(fmt) rb_scan_args_count_lead(fmt, 0, 0)
24398#define rb_scan_args_verify(fmt,varc) (sizeof(char[1-2*(rb_scan_args_count(fmt)<0)])!=1 ? rb_scan_args_bad_format(fmt) : sizeof(char[1-2*(rb_scan_args_count(fmt)!=(varc))])!=1 ? rb_scan_args_length_mismatch(fmt, varc) : RBIMPL_ASSERT_NOTHING)
24399#define rb_scan_args0(argc,argv,fmt,varc,vars) rb_scan_args_set(RB_SCAN_ARGS_PASS_CALLED_KEYWORDS, argc, argv, rb_scan_args_n_lead(fmt), rb_scan_args_n_opt(fmt), rb_scan_args_n_trail(fmt), rb_scan_args_f_var(fmt), rb_scan_args_f_hash(fmt), rb_scan_args_f_block(fmt), (rb_scan_args_verify(fmt, varc), vars), (char *)fmt, varc)
24400#define rb_scan_args_kw0(kw_flag,argc,argv,fmt,varc,vars) rb_scan_args_set(kw_flag, argc, argv, rb_scan_args_n_lead(fmt), rb_scan_args_n_opt(fmt), rb_scan_args_n_trail(fmt), rb_scan_args_f_var(fmt), rb_scan_args_f_hash(fmt), rb_scan_args_f_block(fmt), (rb_scan_args_verify(fmt, varc), vars), (char *)fmt, varc)
24401#define rb_scan_args_next_param() vars[vari++]
24402#undef rb_scan_args_next_param
24403#define rb_scan_args(argc,argvp,fmt,...) __builtin_choose_expr( __builtin_constant_p(fmt), rb_scan_args0( argc, argvp, fmt, (sizeof((VALUE*[]){__VA_ARGS__})/sizeof(VALUE*)), ((VALUE*[]){__VA_ARGS__})), (rb_scan_args)(argc, argvp, fmt __VA_OPT__(, __VA_ARGS__)))
24404#define rb_scan_args_kw(kw_flag,argc,argvp,fmt,...) __builtin_choose_expr( __builtin_constant_p(fmt), rb_scan_args_kw0( kw_flag, argc, argvp, fmt, (sizeof((VALUE*[]){__VA_ARGS__})/sizeof(VALUE*)), ((VALUE*[]){__VA_ARGS__})), (rb_scan_args_kw)(kw_flag, argc, argvp, fmt __VA_OPT__(, __VA_ARGS__)))
24405#define RBIMPL_SYMBOL_H
24406#define RB_ID2SYM rb_id2sym
24407#define RB_SYM2ID rb_sym2id
24408#define ID2SYM RB_ID2SYM
24409#define SYM2ID RB_SYM2ID
24410#define CONST_ID_CACHE RUBY_CONST_ID_CACHE
24411#define CONST_ID RUBY_CONST_ID
24412#define rb_intern_const rb_intern_const
24413#pragma GCC visibility push(default)
24414#pragma GCC visibility pop
24415#define RUBY_CONST_ID_CACHE(result,str) { static ID rb_intern_id_cache; rbimpl_intern_const(&rb_intern_id_cache, (str)); result rb_intern_id_cache; }
24416#define RUBY_CONST_ID(var,str) do { static ID rbimpl_id; (var) = rbimpl_intern_const(&rbimpl_id, (str)); } while (0)
24417#define rb_intern(str) (RBIMPL_CONSTANT_P(str) ? __extension__ ({ static ID rbimpl_id; rbimpl_intern_const(&rbimpl_id, (str)); }) : (rb_intern)(str))
24418#define RBIMPL_VARIABLE_H
24419#pragma GCC visibility push(default)
24420#pragma GCC visibility pop
24421#define RUBY_BACKWARD2_INTTYPES_H
24422#define PRI_INT_PREFIX ""
24423#define PRI_LONG_PREFIX "l"
24424#define PRI_SHORT_PREFIX "h"
24425#define PRI_64_PREFIX PRI_LONG_PREFIX
24426#define RUBY_PRI_VALUE_MARK "\v"
24427#define PRIdVALUE PRI_VALUE_PREFIX"d"
24428#define PRIoVALUE PRI_VALUE_PREFIX"o"
24429#define PRIuVALUE PRI_VALUE_PREFIX"u"
24430#define PRIxVALUE PRI_VALUE_PREFIX"x"
24431#define PRIXVALUE PRI_VALUE_PREFIX"X"
24432#define PRIsVALUE PRI_VALUE_PREFIX"i" RUBY_PRI_VALUE_MARK
24433#define PRIdPTRDIFF PRI_PTRDIFF_PREFIX"d"
24434#define PRIiPTRDIFF PRI_PTRDIFF_PREFIX"i"
24435#define PRIoPTRDIFF PRI_PTRDIFF_PREFIX"o"
24436#define PRIuPTRDIFF PRI_PTRDIFF_PREFIX"u"
24437#define PRIxPTRDIFF PRI_PTRDIFF_PREFIX"x"
24438#define PRIXPTRDIFF PRI_PTRDIFF_PREFIX"X"
24439#define PRIdSIZE PRI_SIZE_PREFIX"d"
24440#define PRIiSIZE PRI_SIZE_PREFIX"i"
24441#define PRIoSIZE PRI_SIZE_PREFIX"o"
24442#define PRIuSIZE PRI_SIZE_PREFIX"u"
24443#define PRIxSIZE PRI_SIZE_PREFIX"x"
24444#define PRIXSIZE PRI_SIZE_PREFIX"X"
24445#pragma GCC visibility push(default)
24446#define USE_SYMBOL_AS_METHOD_NAME 1
24447#define FilePathValue(v) (RB_GC_GUARD(v) = rb_get_path(v))
24448#define FilePathStringValue(v) ((v) = rb_get_path(v))
24449#define rb_varargs_argc_check_runtime(argc,vargc) (((argc) <= (vargc)) ? (argc) : (rb_fatal("argc(%d) exceeds actual arguments(%d)", argc, vargc), 0))
24450#define rb_varargs_argc_valid_p(argc,vargc) ((argc) == 0 ? (vargc) <= 1 : (argc) == (vargc))
24451#define rb_varargs_argc_check(argc,vargc) __builtin_choose_expr(__builtin_constant_p(argc), (rb_varargs_argc_valid_p(argc, vargc) ? (argc) : rb_varargs_bad_length(argc, vargc)), rb_varargs_argc_check_runtime(argc, vargc))
24452#define RUBY_INTERN_H 1
24453#define RBIMPL_INTERN_BIGNUM_H
24454#pragma GCC visibility push(default)
24455#define rb_big2int(x) rb_big2long(x)
24456#define rb_big2uint(x) rb_big2ulong(x)
24457#define INTEGER_PACK_MSWORD_FIRST 0x01
24458#define INTEGER_PACK_LSWORD_FIRST 0x02
24459#define INTEGER_PACK_MSBYTE_FIRST 0x10
24460#define INTEGER_PACK_LSBYTE_FIRST 0x20
24461#define INTEGER_PACK_NATIVE_BYTE_ORDER 0x40
24462#define INTEGER_PACK_2COMP 0x80
24463#define INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION 0x400
24464#define INTEGER_PACK_FORCE_BIGNUM 0x100
24465#define INTEGER_PACK_NEGATIVE 0x200
24466#define INTEGER_PACK_LITTLE_ENDIAN (INTEGER_PACK_LSWORD_FIRST | INTEGER_PACK_LSBYTE_FIRST)
24467#define INTEGER_PACK_BIG_ENDIAN (INTEGER_PACK_MSWORD_FIRST | INTEGER_PACK_MSBYTE_FIRST)
24468#pragma GCC visibility pop
24469#define RBIMPL_INTERN_COMPAR_H
24470#pragma GCC visibility push(default)
24471#pragma GCC visibility pop
24472#define RBIMPL_INTERN_COMPLEX_H
24473#pragma GCC visibility push(default)
24474#define rb_complex_raw1(x) rb_complex_raw((x), INT2FIX(0))
24475#define rb_complex_raw2(x,y) rb_complex_raw((x), (y))
24476#define rb_complex_new1(x) rb_complex_new((x), INT2FIX(0))
24477#define rb_complex_new2(x,y) rb_complex_new((x), (y))
24478#define rb_complex_add rb_complex_plus
24479#define rb_complex_sub rb_complex_minus
24480#define rb_complex_nagate rb_complex_uminus
24481#define rb_Complex1(x) rb_Complex((x), INT2FIX(0))
24482#define rb_Complex2(x,y) rb_Complex((x), (y))
24483#pragma GCC visibility pop
24484#define RBIMPL_INTERN_CONT_H
24485#pragma GCC visibility push(default)
24486#pragma GCC visibility pop
24487#define RBIMPL_INTERN_DIR_H
24488#pragma GCC visibility push(default)
24489#pragma GCC visibility pop
24490#define RBIMPL_INTERN_ENUM_H
24491#pragma GCC visibility push(default)
24492#pragma GCC visibility pop
24493#define RBIMPL_INTERN_ENUMERATOR_H
24494#define RBIMPL_INTERN_EVAL_H
24495#pragma GCC visibility push(default)
24496#pragma GCC visibility pop
24497#pragma GCC visibility push(default)
24498#pragma GCC visibility pop
24499#define SIZED_ENUMERATOR(obj,argc,argv,size_fn) rb_enumeratorize_with_size((obj), ID2SYM(rb_frame_this_func()), (argc), (argv), (size_fn))
24500#define SIZED_ENUMERATOR_KW(obj,argc,argv,size_fn,kw_splat) rb_enumeratorize_with_size_kw((obj), ID2SYM(rb_frame_this_func()), (argc), (argv), (size_fn), (kw_splat))
24501#define RETURN_SIZED_ENUMERATOR(obj,argc,argv,size_fn) do { if (!rb_block_given_p()) return SIZED_ENUMERATOR(obj, argc, argv, size_fn); } while (0)
24502#define RETURN_SIZED_ENUMERATOR_KW(obj,argc,argv,size_fn,kw_splat) do { if (!rb_block_given_p()) return SIZED_ENUMERATOR_KW(obj, argc, argv, size_fn, kw_splat); } while (0)
24503#define RETURN_ENUMERATOR(obj,argc,argv) RETURN_SIZED_ENUMERATOR(obj, argc, argv, 0)
24504#define RETURN_ENUMERATOR_KW(obj,argc,argv,kw_splat) RETURN_SIZED_ENUMERATOR_KW(obj, argc, argv, 0, kw_splat)
24505#define RBIMPL_INTERN_FILE_H
24506#pragma GCC visibility push(default)
24507#pragma GCC visibility pop
24508#define RBIMPL_INTERN_GC_H
24509#pragma GCC visibility push(default)
24510#pragma GCC visibility pop
24511#define RBIMPL_INTERN_IO_H
24512#pragma GCC visibility push(default)
24513#define rb_defout rb_stdout
24514#define RB_RESERVED_FD_P(fd) rb_reserved_fd_p(fd)
24515#pragma GCC visibility pop
24516#define RBIMPL_INTERN_LOAD_H
24517#pragma GCC visibility push(default)
24518#define RB_EXT_RACTOR_SAFE(f) rb_ext_ractor_safe(f)
24519#define HAVE_RB_EXT_RACTOR_SAFE 1
24520#pragma GCC visibility pop
24521#define RBIMPL_INTERN_MARSHAL_H
24522#pragma GCC visibility push(default)
24523#pragma GCC visibility pop
24524#define RBIMPL_INTERN_NUMERIC_H
24525#define RB_NUM_COERCE_FUNCS_NEED_OPID 1
24526#pragma GCC visibility push(default)
24527#pragma GCC visibility pop
24528#define RBIMPL_INTERN_OBJECT_H
24529#pragma GCC visibility push(default)
24530#define RB_OBJ_INIT_COPY(obj,orig) ((obj) != (orig) && (rb_obj_init_copy((obj), (orig)), 1))
24531#define OBJ_INIT_COPY(obj,orig) RB_OBJ_INIT_COPY(obj, orig)
24532#pragma GCC visibility pop
24533#define RBIMPL_INTERN_PARSE_H
24534#pragma GCC visibility push(default)
24535#pragma GCC visibility pop
24536#define RBIMPL_INTERN_PROCESS_H
24537#pragma GCC visibility push(default)
24538#pragma GCC visibility pop
24539#define RBIMPL_INTERN_RANDOM_H
24540#pragma GCC visibility push(default)
24541#pragma GCC visibility pop
24542#define RBIMPL_INTERN_RANGE_H
24543#pragma GCC visibility push(default)
24544#pragma GCC visibility pop
24545#define RBIMPL_INTERN_RATIONAL_H
24546#pragma GCC visibility push(default)
24547#define rb_rational_raw1(x) rb_rational_raw((x), INT2FIX(1))
24548#define rb_rational_raw2(x,y) rb_rational_raw((x), (y))
24549#define rb_rational_new1(x) rb_rational_new((x), INT2FIX(1))
24550#define rb_rational_new2(x,y) rb_rational_new((x), (y))
24551#define rb_Rational1(x) rb_Rational((x), INT2FIX(1))
24552#define rb_Rational2(x,y) rb_Rational((x), (y))
24553#pragma GCC visibility pop
24554#define RBIMPL_INTERN_RE_H
24555#pragma GCC visibility push(default)
24556#define rb_memcmp memcmp
24557#define HAVE_RB_REG_NEW_STR 1
24558#pragma GCC visibility pop
24559#define RBIMPL_INTERN_RUBY_H
24560#pragma GCC visibility push(default)
24561#define rb_argv rb_get_argv()
24562#pragma GCC visibility pop
24563#define RBIMPL_INTERN_SELECT_H
24564#define RBIMPL_INTERN_SELECT_LARGESIZE_H
24565#define rb_fd_ptr rb_fd_ptr
24566#define rb_fd_max rb_fd_max
24567#pragma GCC visibility push(default)
24568#pragma GCC visibility pop
24569#pragma GCC visibility push(default)
24570#pragma GCC visibility pop
24571#define RBIMPL_INTERN_SIGNAL_H
24572#pragma GCC visibility push(default)
24573#define posix_signal ruby_posix_signal
24574#pragma GCC visibility pop
24575#define RBIMPL_INTERN_SPRINTF_H
24576#pragma GCC visibility push(default)
24577#pragma GCC visibility pop
24578#define RBIMPL_INTERN_STRING_H
24579#pragma GCC visibility push(default)
24580#define rb_str_dup_frozen rb_str_new_frozen
24581#define rb_hash_uint32(h,i) st_hash_uint32((h), (i))
24582#define rb_hash_uint(h,i) st_hash_uint((h), (i))
24583#define rb_hash_end(h) st_hash_end(h)
24584#define rb_str_new(str,len) ((RBIMPL_CONSTANT_P(str) && RBIMPL_CONSTANT_P(len) ? rb_str_new_static : rb_str_new) ((str), (len)))
24585#define rb_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_str_new_cstr : rb_str_new_cstr) (str))
24586#define rb_usascii_str_new(str,len) ((RBIMPL_CONSTANT_P(str) && RBIMPL_CONSTANT_P(len) ? rb_usascii_str_new_static : rb_usascii_str_new) ((str), (len)))
24587#define rb_utf8_str_new(str,len) ((RBIMPL_CONSTANT_P(str) && RBIMPL_CONSTANT_P(len) ? rb_utf8_str_new_static : rb_utf8_str_new) ((str), (len)))
24588#define rb_tainted_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_tainted_str_new_cstr : rb_tainted_str_new_cstr) (str))
24589#define rb_usascii_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_usascii_str_new_cstr : rb_usascii_str_new_cstr) (str))
24590#define rb_utf8_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_utf8_str_new_cstr : rb_utf8_str_new_cstr) (str))
24591#define rb_external_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_external_str_new_cstr : rb_external_str_new_cstr) (str))
24592#define rb_locale_str_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_locale_str_new_cstr : rb_locale_str_new_cstr) (str))
24593#define rb_str_buf_new_cstr(str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_str_buf_new_cstr : rb_str_buf_new_cstr) (str))
24594#define rb_str_cat_cstr(buf,str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_str_cat_cstr : rb_str_cat_cstr) ((buf), (str)))
24595#define rb_exc_new_cstr(exc,str) ((RBIMPL_CONSTANT_P(str) ? rbimpl_exc_new_cstr : rb_exc_new_cstr) ((exc), (str)))
24596#define rb_str_new2 rb_str_new_cstr
24597#define rb_str_new3 rb_str_new_shared
24598#define rb_str_new4 rb_str_new_frozen
24599#define rb_str_new5 rb_str_new_with_class
24600#define rb_tainted_str_new2 rb_tainted_str_new_cstr
24601#define rb_str_buf_new2 rb_str_buf_new_cstr
24602#define rb_usascii_str_new2 rb_usascii_str_new_cstr
24603#define rb_str_buf_cat rb_str_cat
24604#define rb_str_buf_cat2 rb_str_cat_cstr
24605#define rb_str_cat2 rb_str_cat_cstr
24606#define rb_strlen_lit(str) (sizeof(str "") - 1)
24607#define rb_str_new_lit(str) rb_str_new_static((str), rb_strlen_lit(str))
24608#define rb_usascii_str_new_lit(str) rb_usascii_str_new_static((str), rb_strlen_lit(str))
24609#define rb_utf8_str_new_lit(str) rb_utf8_str_new_static((str), rb_strlen_lit(str))
24610#define rb_enc_str_new_lit(str,enc) rb_enc_str_new_static((str), rb_strlen_lit(str), (enc))
24611#define rb_str_new_literal(str) rb_str_new_lit(str)
24612#define rb_usascii_str_new_literal(str) rb_usascii_str_new_lit(str)
24613#define rb_utf8_str_new_literal(str) rb_utf8_str_new_lit(str)
24614#define rb_enc_str_new_literal(str,enc) rb_enc_str_new_lit(str, enc)
24615#pragma GCC visibility pop
24616#define RBIMPL_INTERN_STRUCT_H
24617#pragma GCC visibility push(default)
24618#pragma GCC visibility pop
24619#define RBIMPL_INTERN_THREAD_H
24620#pragma GCC visibility push(default)
24621#define RUBY_UBF_IO RBIMPL_CAST((rb_unblock_function_t *)-1)
24622#define RUBY_UBF_PROCESS RBIMPL_CAST((rb_unblock_function_t *)-1)
24623#pragma GCC visibility pop
24624#define RBIMPL_INTERN_TIME_H
24625#pragma GCC visibility push(default)
24626#pragma GCC visibility pop
24627#define RBIMPL_INTERN_VARIABLE_H
24628#pragma GCC visibility push(default)
24629#pragma GCC visibility pop
24631#define HAVE_NATIVETHREAD
24632#define InitVM(ext) {void InitVM_ ##ext(void);InitVM_ ##ext();}
24633#define rb_yield_values(argc,...) __extension__({ const int rb_yield_values_argc = (argc); const VALUE rb_yield_values_args[] = {__VA_ARGS__}; const int rb_yield_values_nargs = (int)(sizeof(rb_yield_values_args) / sizeof(VALUE)); rb_yield_values2( rb_varargs_argc_check(rb_yield_values_argc, rb_yield_values_nargs), rb_yield_values_nargs ? rb_yield_values_args : NULL); })
24634#define rb_funcall(recv,mid,argc,...) __extension__({ const int rb_funcall_argc = (argc); const VALUE rb_funcall_args[] = {__VA_ARGS__}; const int rb_funcall_nargs = (int)(sizeof(rb_funcall_args) / sizeof(VALUE)); rb_funcallv(recv, mid, rb_varargs_argc_check(rb_funcall_argc, rb_funcall_nargs), rb_funcall_nargs ? rb_funcall_args : NULL); })
24635#define RUBY_SUBST_H 1
24638#define snprintf ruby_snprintf
24639#define vsnprintf ruby_vsnprintf
24640#pragma GCC visibility pop
24641#define RUBY_VM_CORE_H
24642#define N_OR_RUBY_DEBUG(n) (((n) > 0) ? (n) : RUBY_DEBUG)
24643#define VM_CHECK_MODE N_OR_RUBY_DEBUG(0)
24646#define _BITS_SIGNUM_GENERIC_H 1
24647#define SIG_ERR ((__sighandler_t) -1)
24648#define SIG_DFL ((__sighandler_t) 0)
24649#define SIG_IGN ((__sighandler_t) 1)
24650#define SIG_HOLD ((__sighandler_t) 2)
24663#define SIGIO SIGPOLL
24664#define SIGIOT SIGABRT
24665#define SIGCLD SIGCHLD
24666#define _BITS_SIGNUM_ARCH_H 1
24667#define SIGSTKFLT 16
24681#define SIGVTALRM 26
24686#define SIGIO SIGPOLL
24687#define SIGIOT SIGABRT
24688#define SIGCLD SIGCHLD
24689#define __SIGRTMIN 32
24690#define __SIGRTMAX 64
24691#define _NSIG (__SIGRTMAX + 1)
24692#define __sig_atomic_t_defined 1
24693#define __siginfo_t_defined 1
24694#define __WORDSIZE 64
24695#define __WORDSIZE_TIME64_COMPAT32 1
24696#define __SYSCALL_WORDSIZE 64
24697#define ____sigval_t_defined
24698#define __SI_MAX_SIZE 128
24699#define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 4)
24700#define _BITS_SIGINFO_ARCH_H 1
24701#define __SI_ALIGNMENT
24702#define __SI_BAND_TYPE long int
24703#define __SI_CLOCK_T __clock_t
24704#define __SI_ERRNO_THEN_CODE 1
24705#define __SI_HAVE_SIGSYS 1
24706#define __SI_SIGFAULT_ADDL
24707#define si_pid _sifields._kill.si_pid
24708#define si_uid _sifields._kill.si_uid
24709#define si_timerid _sifields._timer.si_tid
24710#define si_overrun _sifields._timer.si_overrun
24711#define si_status _sifields._sigchld.si_status
24712#define si_utime _sifields._sigchld.si_utime
24713#define si_stime _sifields._sigchld.si_stime
24714#define si_value _sifields._rt.si_sigval
24715#define si_int _sifields._rt.si_sigval.sival_int
24716#define si_ptr _sifields._rt.si_sigval.sival_ptr
24717#define si_addr _sifields._sigfault.si_addr
24718#define si_addr_lsb _sifields._sigfault.si_addr_lsb
24719#define si_lower _sifields._sigfault._bounds._addr_bnd._lower
24720#define si_upper _sifields._sigfault._bounds._addr_bnd._upper
24721#define si_pkey _sifields._sigfault._bounds._pkey
24722#define si_band _sifields._sigpoll.si_band
24723#define si_fd _sifields._sigpoll.si_fd
24724#define si_call_addr _sifields._sigsys._call_addr
24725#define si_syscall _sifields._sigsys._syscall
24726#define si_arch _sifields._sigsys._arch
24727#define _BITS_SIGINFO_CONSTS_H 1
24728#define __SI_ASYNCIO_AFTER_SIGIO 1
24729#define SI_ASYNCNL SI_ASYNCNL
24730#define SI_DETHREAD SI_DETHREAD
24731#define SI_TKILL SI_TKILL
24732#define SI_SIGIO SI_SIGIO
24733#define SI_ASYNCIO SI_ASYNCIO
24734#define SI_MESGQ SI_MESGQ
24735#define SI_TIMER SI_TIMER
24736#define SI_ASYNCIO SI_ASYNCIO
24737#define SI_QUEUE SI_QUEUE
24738#define SI_USER SI_USER
24739#define SI_KERNEL SI_KERNEL
24740#define ILL_ILLOPC ILL_ILLOPC
24741#define ILL_ILLOPN ILL_ILLOPN
24742#define ILL_ILLADR ILL_ILLADR
24743#define ILL_ILLTRP ILL_ILLTRP
24744#define ILL_PRVOPC ILL_PRVOPC
24745#define ILL_PRVREG ILL_PRVREG
24746#define ILL_COPROC ILL_COPROC
24747#define ILL_BADSTK ILL_BADSTK
24748#define ILL_BADIADDR ILL_BADIADDR
24749#define FPE_INTDIV FPE_INTDIV
24750#define FPE_INTOVF FPE_INTOVF
24751#define FPE_FLTDIV FPE_FLTDIV
24752#define FPE_FLTOVF FPE_FLTOVF
24753#define FPE_FLTUND FPE_FLTUND
24754#define FPE_FLTRES FPE_FLTRES
24755#define FPE_FLTINV FPE_FLTINV
24756#define FPE_FLTSUB FPE_FLTSUB
24757#define FPE_FLTUNK FPE_FLTUNK
24758#define FPE_CONDTRAP FPE_CONDTRAP
24759#define SEGV_MAPERR SEGV_MAPERR
24760#define SEGV_ACCERR SEGV_ACCERR
24761#define SEGV_BNDERR SEGV_BNDERR
24762#define SEGV_PKUERR SEGV_PKUERR
24763#define SEGV_ACCADI SEGV_ACCADI
24764#define SEGV_ADIDERR SEGV_ADIDERR
24765#define SEGV_ADIPERR SEGV_ADIPERR
24766#define SEGV_MTEAERR SEGV_MTEAERR
24767#define SEGV_MTESERR SEGV_MTESERR
24768#define BUS_ADRALN BUS_ADRALN
24769#define BUS_ADRERR BUS_ADRERR
24770#define BUS_OBJERR BUS_OBJERR
24771#define BUS_MCEERR_AR BUS_MCEERR_AR
24772#define BUS_MCEERR_AO BUS_MCEERR_AO
24773#define TRAP_BRKPT TRAP_BRKPT
24774#define TRAP_TRACE TRAP_TRACE
24775#define TRAP_BRANCH TRAP_BRANCH
24776#define TRAP_HWBKPT TRAP_HWBKPT
24777#define TRAP_UNK TRAP_UNK
24778#define CLD_EXITED CLD_EXITED
24779#define CLD_KILLED CLD_KILLED
24780#define CLD_DUMPED CLD_DUMPED
24781#define CLD_TRAPPED CLD_TRAPPED
24782#define CLD_STOPPED CLD_STOPPED
24783#define CLD_CONTINUED CLD_CONTINUED
24784#define POLL_IN POLL_IN
24785#define POLL_OUT POLL_OUT
24786#define POLL_MSG POLL_MSG
24787#define POLL_ERR POLL_ERR
24788#define POLL_PRI POLL_PRI
24789#define POLL_HUP POLL_HUP
24790#define _BITS_SIGINFO_CONSTS_ARCH_H 1
24791#define __sigval_t_defined
24792#define __sigevent_t_defined 1
24793#define __WORDSIZE 64
24794#define __WORDSIZE_TIME64_COMPAT32 1
24795#define __SYSCALL_WORDSIZE 64
24796#define __SIGEV_MAX_SIZE 64
24797#define __SIGEV_PAD_SIZE ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
24798#define sigev_notify_function _sigev_un._sigev_thread._function
24799#define sigev_notify_attributes _sigev_un._sigev_thread._attribute
24800#define _BITS_SIGEVENT_CONSTS_H 1
24801#define SIGEV_SIGNAL SIGEV_SIGNAL
24802#define SIGEV_NONE SIGEV_NONE
24803#define SIGEV_THREAD SIGEV_THREAD
24804#define SIGEV_THREAD_ID SIGEV_THREAD_ID
24805#define sigmask(sig) __glibc_macro_warning ("sigmask is deprecated") ((int)(1u << ((sig) - 1)))
24807#define _BITS_SIGACTION_H 1
24808#define sa_handler __sigaction_handler.sa_handler
24809#define sa_sigaction __sigaction_handler.sa_sigaction
24810#define SA_NOCLDSTOP 1
24811#define SA_NOCLDWAIT 2
24812#define SA_SIGINFO 4
24813#define SA_ONSTACK 0x08000000
24814#define SA_RESTART 0x10000000
24815#define SA_NODEFER 0x40000000
24816#define SA_RESETHAND 0x80000000
24817#define SA_INTERRUPT 0x20000000
24818#define SA_NOMASK SA_NODEFER
24819#define SA_ONESHOT SA_RESETHAND
24820#define SA_STACK SA_ONSTACK
24822#define SIG_UNBLOCK 1
24823#define SIG_SETMASK 2
24824#define _BITS_SIGCONTEXT_H 1
24825#define FP_XSTATE_MAGIC1 0x46505853U
24826#define FP_XSTATE_MAGIC2 0x46505845U
24827#define FP_XSTATE_MAGIC2_SIZE sizeof (FP_XSTATE_MAGIC2)
24828#define __need_size_t
24829#undef __need_ptrdiff_t
24830#undef __need_size_t
24831#undef __need_wchar_t
24833#define NULL ((void *)0)
24835#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
24836#define __stack_t_defined 1
24837#define __need_size_t
24838#undef __need_ptrdiff_t
24839#undef __need_size_t
24840#undef __need_wchar_t
24842#define NULL ((void *)0)
24844#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
24845#define _SYS_UCONTEXT_H 1
24846#define __ctx(fld) fld
24848#define NGREG __NGREG
24849#define REG_R8 REG_R8
24850#define REG_R9 REG_R9
24851#define REG_R10 REG_R10
24852#define REG_R11 REG_R11
24853#define REG_R12 REG_R12
24854#define REG_R13 REG_R13
24855#define REG_R14 REG_R14
24856#define REG_R15 REG_R15
24857#define REG_RDI REG_RDI
24858#define REG_RSI REG_RSI
24859#define REG_RBP REG_RBP
24860#define REG_RBX REG_RBX
24861#define REG_RDX REG_RDX
24862#define REG_RAX REG_RAX
24863#define REG_RCX REG_RCX
24864#define REG_RSP REG_RSP
24865#define REG_RIP REG_RIP
24866#define REG_EFL REG_EFL
24867#define REG_CSGSFS REG_CSGSFS
24868#define REG_ERR REG_ERR
24869#define REG_TRAPNO REG_TRAPNO
24870#define REG_OLDMASK REG_OLDMASK
24871#define REG_CR2 REG_CR2
24873#define _BITS_SIGSTACK_H 1
24874#define MINSIGSTKSZ 2048
24875#define SIGSTKSZ 8192
24877#define SIGSTKSZ sysconf (_SC_SIGSTKSZ)
24879#define MINSIGSTKSZ SIGSTKSZ
24880#define _BITS_SS_FLAGS_H 1
24881#define SS_ONSTACK SS_ONSTACK
24882#define SS_DISABLE SS_DISABLE
24883#define __sigstack_defined 1
24884#define _BITS_SIGTHREAD_H 1
24885#define SIGRTMIN (__libc_current_sigrtmin ())
24886#define SIGRTMAX (__libc_current_sigrtmax ())
24887#define RUBY_TOPLEVEL_ASSERT_H
24889#define assert RUBY_ASSERT_NDEBUG
24890#define VM_ASSERT(expr) ((void)0)
24891#define VM_UNREACHABLE(func) UNREACHABLE
24893#define _BITS_SETJMP_H 1
24894#define __WORDSIZE 64
24895#define __WORDSIZE_TIME64_COMPAT32 1
24896#define __SYSCALL_WORDSIZE 64
24897#define __jmp_buf_tag_defined 1
24898#define setjmp(env) _setjmp (env)
24899#define sigsetjmp(env,savemask) __sigsetjmp (env, savemask)
24903#undef __ASSERT_VOID_CAST
24904#undef assert_perror
24906#define __ASSERT_VOID_CAST (void)
24907#define assert(expr) (__ASSERT_VOID_CAST (0))
24908#define assert_perror(errnum) (__ASSERT_VOID_CAST (0))
24909#undef static_assert
24910#define static_assert _Static_assert
24912#define stringify(expr) stringify_1(expr)
24913#define stringify_1(expr) #expr
24914#define CCAN_CONTAINER_OF_H
24915#define CCAN_CHECK_TYPE_H
24916#define check_type(expr,type) ((typeof(expr) *)0 != (type *)0)
24917#define check_types_match(expr1,expr2) ((typeof(expr1) *)0 != (typeof(expr2) *)0)
24918#define container_of(member_ptr,containing_type,member) ((containing_type *) ((char *)(member_ptr) - container_off(containing_type, member)) + check_types_match(*(member_ptr), ((containing_type *)0)->member))
24919#define container_of_or_null(member_ptr,containing_type,member) ((containing_type *) container_of_or_null_(member_ptr, container_off(containing_type, member)) + check_types_match(*(member_ptr), ((containing_type *)0)->member))
24920#define container_off(containing_type,member) offsetof(containing_type, member)
24921#define container_of_var(member_ptr,container_var,member) container_of(member_ptr, typeof(*container_var), member)
24922#define container_off_var(var,member) container_off(typeof(*var), member)
24923#define LIST_LOC __FILE__ ":" stringify(__LINE__)
24924#define list_debug(h,loc) ((void)loc, h)
24925#define list_debug_node(n,loc) ((void)loc, n)
24926#define LIST_HEAD_INIT(name) { { &(name).n, &(name).n } }
24927#define LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name)
24928#define list_add_after(h,p,n) list_add_after_(h, p, n, LIST_LOC)
24929#define list_add(h,n) list_add_(h, n, LIST_LOC)
24930#define list_add_before(h,p,n) list_add_before_(h, p, n, LIST_LOC)
24931#define list_add_tail(h,n) list_add_tail_(h, n, LIST_LOC)
24932#define list_empty(h) list_empty_(h, LIST_LOC)
24933#define list_empty_nodebug(h) list_empty(h)
24934#define list_del(n) list_del_(n, LIST_LOC)
24935#define list_del_init(n) list_del_init_(n, LIST_LOC)
24936#define list_swap(o,n) list_swap_(o, n, LIST_LOC)
24937#define list_entry(n,type,member) container_of(n, type, member)
24938#define list_top(h,type,member) ((type *)list_top_((h), list_off_(type, member)))
24939#define list_pop(h,type,member) ((type *)list_pop_((h), list_off_(type, member)))
24940#define list_tail(h,type,member) ((type *)list_tail_((h), list_off_(type, member)))
24941#define list_for_each(h,i,member) list_for_each_off(h, i, list_off_var_(i, member))
24942#define list_for_each_rev(h,i,member) list_for_each_rev_off(h, i, list_off_var_(i, member))
24943#define list_for_each_rev_safe(h,i,nxt,member) list_for_each_rev_safe_off(h, i, nxt, list_off_var_(i, member))
24944#define list_for_each_safe(h,i,nxt,member) list_for_each_safe_off(h, i, nxt, list_off_var_(i, member))
24945#define list_next(h,i,member) ((list_typeof(i))list_entry_or_null(list_debug(h, __FILE__ ":" stringify(__LINE__)), (i)->member.next, list_off_var_((i), member)))
24946#define list_prev(h,i,member) ((list_typeof(i))list_entry_or_null(list_debug(h, __FILE__ ":" stringify(__LINE__)), (i)->member.prev, list_off_var_((i), member)))
24947#define list_append_list(t,f) list_append_list_(t, f, __FILE__ ":" stringify(__LINE__))
24948#define list_prepend_list(t,f) list_prepend_list_(t, f, LIST_LOC)
24949#define list_for_each_off_dir_(h,i,off,dir) for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, (off)); list_node_from_off_((void *)i, (off)) != &(h)->n; i = list_node_to_off_(list_node_from_off_((void *)i, (off))->dir, (off)))
24950#define list_for_each_safe_off_dir_(h,i,nxt,off,dir) for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, (off)), nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, (off)); list_node_from_off_(i, (off)) != &(h)->n; i = nxt, nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, (off)))
24951#define list_for_each_off(h,i,off) list_for_each_off_dir_((h),(i),(off),next)
24952#define list_for_each_rev_off(h,i,off) list_for_each_off_dir_((h),(i),(off),prev)
24953#define list_for_each_safe_off(h,i,nxt,off) list_for_each_safe_off_dir_((h),(i),(nxt),(off),next)
24954#define list_for_each_rev_safe_off(h,i,nxt,off) list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev)
24955#define list_entry_off(n,type,off) ((type *)list_node_from_off_((n), (off)))
24956#define list_head_off(h,type,off) ((type *)list_head_off((h), (off)))
24957#define list_tail_off(h,type,off) ((type *)list_tail_((h), (off)))
24958#define list_add_off(h,n,off) list_add((h), list_node_from_off_((n), (off)))
24959#define list_del_off(n,off) list_del(list_node_from_off_((n), (off)))
24960#define list_del_from_off(h,n,off) list_del_from(h, list_node_from_off_((n), (off)))
24961#define list_off_(type,member) (container_off(type, member) + check_type(((type *)0)->member, struct list_node))
24962#define list_off_var_(var,member) (container_off_var(var, member) + check_type(var->member, struct list_node))
24963#define list_typeof(var) typeof(var)
24965#define ID_STATIC_SYM RUBY_ID_STATIC_SYM
24966#define ID_SCOPE_SHIFT RUBY_ID_SCOPE_SHIFT
24967#define ID_SCOPE_MASK RUBY_ID_SCOPE_MASK
24968#define ID_LOCAL RUBY_ID_LOCAL
24969#define ID_INSTANCE RUBY_ID_INSTANCE
24970#define ID_GLOBAL RUBY_ID_GLOBAL
24971#define ID_ATTRSET RUBY_ID_ATTRSET
24972#define ID_CONST RUBY_ID_CONST
24973#define ID_CLASS RUBY_ID_CLASS
24974#define ID_JUNK RUBY_ID_JUNK
24975#define ID_INTERNAL RUBY_ID_INTERNAL
24976#define symIFUNC ID2SYM(idIFUNC)
24977#define symCFUNC ID2SYM(idCFUNC)
24978#define RUBY_TOKEN_DOT2 128
24979#define RUBY_TOKEN_DOT3 129
24980#define RUBY_TOKEN_BDOT2 130
24981#define RUBY_TOKEN_BDOT3 131
24982#define RUBY_TOKEN_UPLUS 132
24983#define RUBY_TOKEN_UMINUS 133
24984#define RUBY_TOKEN_POW 134
24985#define RUBY_TOKEN_CMP 135
24986#define RUBY_TOKEN_LSHFT 136
24987#define RUBY_TOKEN_RSHFT 137
24988#define RUBY_TOKEN_LEQ 138
24989#define RUBY_TOKEN_GEQ 139
24990#define RUBY_TOKEN_EQ 140
24991#define RUBY_TOKEN_EQQ 141
24992#define RUBY_TOKEN_NEQ 142
24993#define RUBY_TOKEN_MATCH 143
24994#define RUBY_TOKEN_NMATCH 144
24995#define RUBY_TOKEN_AREF 145
24996#define RUBY_TOKEN_ASET 146
24997#define RUBY_TOKEN_COLON2 147
24998#define RUBY_TOKEN_ANDOP 148
24999#define RUBY_TOKEN_OROP 149
25000#define RUBY_TOKEN_ANDDOT 150
25001#define RUBY_TOKEN(t) RUBY_TOKEN_ ##t
25002#define RUBY_TOKEN2ID_TYPE(tok,type) ((tok<<RUBY_ID_SCOPE_SHIFT)|type|RUBY_ID_STATIC_SYM)
25003#define TOKEN2LOCALID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_LOCAL)
25004#define TOKEN2INSTANCEID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_INSTANCE)
25005#define TOKEN2GLOBALID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_GLOBAL)
25006#define TOKEN2CONSTID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_CONST)
25007#define TOKEN2CLASSID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_CLASS)
25008#define TOKEN2ATTRSETID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_ATTRSET)
25009#define DEFINE_LOCALID_FROM_TOKEN(n) id ##n = TOKEN2LOCALID(t ##n)
25010#define DEFINE_INSTANCEID_FROM_TOKEN(n) id ##n = TOKEN2INSTANCEID(t ##n)
25011#define DEFINE_GLOBALID_FROM_TOKEN(n) id ##n = TOKEN2GLOBALID(t ##n)
25012#define DEFINE_CONSTID_FROM_TOKEN(n) id ##n = TOKEN2CONSTID(t ##n)
25013#define DEFINE_CLASSID_FROM_TOKEN(n) id ##n = TOKEN2CLASSID(t ##n)
25014#define DEFINE_ATTRSETID_FROM_TOKEN(n) id ##n = TOKEN2ATTRSETID(t ##n)
25015#define RUBY_INTERNAL_H 1
25016#define LIKELY(x) RB_LIKELY(x)
25017#define UNLIKELY(x) RB_UNLIKELY(x)
25018#define numberof(array) ((int)(sizeof(array) / sizeof((array)[0])))
25019#define roomof(x,y) (((x) + (y) - 1) / (y))
25020#define type_roomof(x,y) roomof(sizeof(x), sizeof(y))
25021#define ACCESS_ONCE(type,x) (*((volatile type *)&(x)))
25031#undef RHASH_EMPTY_P
25032#undef ROBJECT_IV_INDEX_TBL
25037#define rb_ary_new_from_args(...) rb_nonexistent_symbol(__VA_ARGS__)
25038#define rb_io_fptr_finalize(...) rb_nonexistent_symbol(__VA_ARGS__)
25039#define rb_fstring_cstr(...) rb_nonexistent_symbol(__VA_ARGS__)
25040#define rb_sym_intern_ascii_cstr(...) rb_nonexistent_symbol(__VA_ARGS__)
25041#define rb_funcallv(...) rb_nonexistent_symbol(__VA_ARGS__)
25042#define rb_method_basic_definition_p(...) rb_nonexistent_symbol(__VA_ARGS__)
25043#pragma GCC visibility push(default)
25044#pragma GCC visibility pop
25045#define rp(obj) rb_obj_info_dump_loc((VALUE)(obj), __FILE__, __LINE__, RUBY_FUNCTION_NAME_STRING)
25046#define rp_m(msg,obj) do { fputs((msg), stderr); rb_obj_info_dump((VALUE)(obj)); } while (0)
25047#define bp() ruby_debug_breakpoint()
25048#define RBOOL(v) ((v) ? Qtrue : Qfalse)
25049#define RB_BIGNUM_TYPE_P(x) RB_TYPE_P((x), T_BIGNUM)
25050#define INTERNAL_ARRAY_H
25051#define INTERNAL_STATIC_ASSERT_H
25052#define STATIC_ASSERT RBIMPL_STATIC_ASSERT
25053#define ARRAY_DEBUG (0+RUBY_DEBUG)
25054#define RARRAY_PTR_IN_USE_FLAG FL_USER14
25055#pragma GCC visibility push(default)
25056#pragma GCC visibility pop
25057#undef rb_ary_new_from_args
25058#define rb_ary_new_from_args(n,...) __extension__ ({ const VALUE args_to_new_ary[] = {__VA_ARGS__}; if (__builtin_constant_p(n)) { STATIC_ASSERT(rb_ary_new_from_args, numberof(args_to_new_ary) == (n)); } rb_ary_new_from_values(numberof(args_to_new_ary), args_to_new_ary); })
25060#define INTERNAL_SERIAL_H
25061#define SERIALT2NUM ULL2NUM
25062#define PRI_SERIALT_PREFIX PRI_LL_PREFIX
25063#define SIZEOF_SERIAL_T SIZEOF_LONG_LONG
25064#define INTERNAL_VM_H
25066#undef rb_method_basic_definition_p
25067#pragma GCC visibility push(default)
25068#pragma GCC visibility pop
25069#pragma GCC visibility push(default)
25070#pragma GCC visibility pop
25071#pragma GCC visibility push(default)
25072#pragma GCC visibility pop
25073#pragma GCC visibility push(default)
25074#pragma GCC visibility pop
25075#define RUBY_DTRACE_CREATE_HOOK(name,arg) RUBY_DTRACE_HOOK(name ##_CREATE, arg)
25076#define RUBY_DTRACE_HOOK(name,arg) do { if (UNLIKELY(RUBY_DTRACE_ ##name ##_ENABLED())) { int dtrace_line; const char *dtrace_file = rb_source_location_cstr(&dtrace_line); if (!dtrace_file) dtrace_file = ""; RUBY_DTRACE_ ##name(arg, dtrace_file, dtrace_line); } } while (0)
25077#define RUBY_METHOD_H 1
25078#define INTERNAL_IMEMO_H
25079#define INTERNAL_GC_H
25080#define INTERNAL_COMPILERS_H
25081#define RUBY_BACKWARD2_GCC_VERSION_SINCE_H
25082#define GCC_VERSION_SINCE(x,y,z) RBIMPL_COMPILER_SINCE(GCC, (x), (y), (z))
25083#define GCC_VERSION_BEFORE(x,y,z) (RBIMPL_COMPILER_BEFORE(GCC, (x), (y), (z)) || (RBIMPL_COMPILER_IS(GCC) && ((RBIMPL_COMPILER_VERSION_MAJOR == (x)) && ((RBIMPL_COMPILER_VERSION_MINOR == (y)) && (RBIMPL_COMPILER_VERSION_PATCH == (z))))))
25084#define MSC_VERSION_SINCE(_) RBIMPL_COMPILER_SINCE(MSVC, (_) / 100, (_) % 100, 0)
25085#define MSC_VERSION_BEFORE(_) RBIMPL_COMPILER_BEFORE(MSVC, (_) / 100, (_) % 100, 0)
25086#define __has_declspec_attribute(...) RBIMPL_HAS_DECLSPEC_ATTRIBUTE(__VA_ARGS__)
25087#define __has_feature(...) RBIMPL_HAS_FEATURE(__VA_ARGS__)
25088#define __has_extension(...) RBIMPL_HAS_EXTENSION(__VA_ARGS__)
25089#define __has_warning(...) RBIMPL_HAS_WARNING(__VA_ARGS__)
25090#define RB_OBJ_BUILTIN_TYPE(obj) rb_obj_builtin_type(obj)
25091#define OBJ_BUILTIN_TYPE(obj) RB_OBJ_BUILTIN_TYPE(obj)
25092#define rb_obj_builtin_type(obj) __extension__({ VALUE arg_obj = (obj); RB_SPECIAL_CONST_P(arg_obj) ? -1 : (int)RB_BUILTIN_TYPE(arg_obj); })
25093#define FLEX_ARY_LEN
25094#define BITFIELD(type,name,size) type name : size
25095#define RVALUE_SIZE (sizeof(struct RBasic) + sizeof(VALUE[RBIMPL_RVALUE_EMBED_LEN_MAX]))
25096#define RB_RVARGC_NEWOBJ_OF(var,T,c,f,s) T *(var) = (T *)(((f) & FL_WB_PROTECTED) ? rb_wb_protected_newobj_of((c), (f) & ~FL_WB_PROTECTED, s) : rb_wb_unprotected_newobj_of((c), (f), s))
25097#define RB_RVARGC_EC_NEWOBJ_OF(ec,var,T,c,f,s) T *(var) = (T *)(((f) & FL_WB_PROTECTED) ? rb_ec_wb_protected_newobj_of((ec), (c), (f) & ~FL_WB_PROTECTED, s) : rb_wb_unprotected_newobj_of((c), (f), s))
25098#define RB_NEWOBJ_OF(var,T,c,f) RB_RVARGC_NEWOBJ_OF(var, T, c, f, RVALUE_SIZE)
25099#define RB_EC_NEWOBJ_OF(ec,var,T,c,f) RB_RVARGC_EC_NEWOBJ_OF(ec, var, T, c, f, RVALUE_SIZE)
25100#define NEWOBJ_OF(var,T,c,f) RB_NEWOBJ_OF((var), T, (c), (f))
25101#define RVARGC_NEWOBJ_OF(var,T,c,f,s) RB_RVARGC_NEWOBJ_OF((var), T, (c), (f), (s))
25102#define RB_OBJ_GC_FLAGS_MAX 6
25103#define INTERNAL_WARNINGS_H
25104#define COMPILER_WARNING_PUSH RBIMPL_WARNING_PUSH()
25105#define COMPILER_WARNING_POP RBIMPL_WARNING_POP()
25106#define COMPILER_WARNING_ERROR(flag) RBIMPL_WARNING_ERROR(flag)
25107#define COMPILER_WARNING_IGNORED(flag) RBIMPL_WARNING_IGNORED(flag)
25108#define UNALIGNED_MEMBER_ACCESS(expr) __extension__({ COMPILER_WARNING_PUSH; COMPILER_WARNING_IGNORED(-Waddress-of-packed-member); __typeof__(expr) unaligned_member_access_result = (expr); COMPILER_WARNING_POP; unaligned_member_access_result; })
25109#define UNALIGNED_MEMBER_PTR(ptr,mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
25110#define RB_OBJ_WRITE(a,slot,b) rb_obj_write((VALUE)(a), UNALIGNED_MEMBER_ACCESS((VALUE *)(slot)), (VALUE)(b), __FILE__, __LINE__)
25111#define SIZE_POOL_COUNT 1
25112#pragma GCC visibility push(default)
25113#pragma GCC visibility pop
25114#pragma GCC visibility push(default)
25115#pragma GCC visibility pop
25116#define SIZED_REALLOC_N(x,y,z,w) REALLOC_N(x, y, z)
25117#define ruby_sized_xrealloc ruby_sized_xrealloc_inlined
25118#define ruby_sized_xrealloc2 ruby_sized_xrealloc2_inlined
25119#define ruby_sized_xfree ruby_sized_xfree_inlined
25120#define IMEMO_DEBUG 0
25121#define IMEMO_MASK 0x0f
25122#define IMEMO_FL_USHIFT (FL_USHIFT + 4)
25123#define IMEMO_FL_USER0 FL_USER4
25124#define IMEMO_FL_USER1 FL_USER5
25125#define IMEMO_FL_USER2 FL_USER6
25126#define IMEMO_FL_USER3 FL_USER7
25127#define IMEMO_FL_USER4 FL_USER8
25128#define IMEMO_FL_USER5 FL_USER9
25129#define THROW_DATA_CONSUMED IMEMO_FL_USER0
25130#define THROW_DATA_P(err) imemo_throw_data_p((VALUE)err)
25131#define MEMO_CAST(m) ((struct MEMO *)(m))
25132#define MEMO_NEW(a,b,c) ((struct MEMO *)rb_imemo_new(imemo_memo, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0))
25133#define MEMO_FOR(type,value) ((type *)RARRAY_PTR(value))
25134#define NEW_MEMO_FOR(type,value) ((value) = rb_ary_tmp_new_fill(type_roomof(type, VALUE)), MEMO_FOR(type, value))
25135#define NEW_PARTIAL_MEMO_FOR(type,value,member) ((value) = rb_ary_tmp_new_fill(type_roomof(type, VALUE)), rb_ary_set_len((value), offsetof(type, member) / sizeof(VALUE)), MEMO_FOR(type, value))
25136#pragma GCC visibility push(default)
25137#pragma GCC visibility pop
25138#define IMEMO_TYPE_P(v,t) imemo_type_p((VALUE)v, t)
25139#pragma GCC diagnostic push
25140#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
25141#pragma GCC diagnostic pop
25142#pragma GCC diagnostic push
25143#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
25144#pragma GCC diagnostic pop
25145#define END_OF_ENUMERATION(key)
25146#define METHOD_ENTRY_VISI(me) (rb_method_visibility_t)(((me)->flags & (IMEMO_FL_USER0 | IMEMO_FL_USER1)) >> (IMEMO_FL_USHIFT+0))
25147#define METHOD_ENTRY_BASIC(me) (int) (((me)->flags & (IMEMO_FL_USER2 )) >> (IMEMO_FL_USHIFT+2))
25148#define METHOD_ENTRY_COMPLEMENTED(me) ((me)->flags & IMEMO_FL_USER3)
25149#define METHOD_ENTRY_COMPLEMENTED_SET(me) ((me)->flags |= IMEMO_FL_USER3)
25150#define METHOD_ENTRY_CACHED(me) ((me)->flags & IMEMO_FL_USER4)
25151#define METHOD_ENTRY_CACHED_SET(me) ((me)->flags |= IMEMO_FL_USER4)
25152#define METHOD_ENTRY_INVALIDATED(me) ((me)->flags & IMEMO_FL_USER5)
25153#define METHOD_ENTRY_INVALIDATED_SET(me) ((me)->flags |= IMEMO_FL_USER5)
25154#define METHOD_ENTRY_CACHEABLE(me) !(METHOD_ENTRY_VISI(me) == METHOD_VISI_PROTECTED)
25155#define VM_METHOD_TYPE_MINIMUM_BITS 4
25156#define rb_iseq_t rb_iseq_t
25157#define UNDEFINED_METHOD_ENTRY_P(me) (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF)
25158#define UNDEFINED_REFINED_METHOD_P(def) ((def)->type == VM_METHOD_TYPE_REFINED && UNDEFINED_METHOD_ENTRY_P((def)->body.refined.orig_me))
25159#pragma GCC visibility push(default)
25160#pragma GCC visibility pop
25161#define RUBY_NODE_H 1
25162#define RNODE(obj) ((struct RNode *)(obj))
25163#define NODE_FL_NEWLINE (((VALUE)1)<<7)
25164#define NODE_TYPESHIFT 8
25165#define NODE_TYPEMASK (((VALUE)0x7f)<<NODE_TYPESHIFT)
25166#define nd_type(n) ((int) (((n)->flags & NODE_TYPEMASK)>>NODE_TYPESHIFT))
25167#define nd_set_type(n,t) rb_node_set_type(n, t)
25168#define nd_init_type(n,t) (n)->flags=(((n)->flags&~NODE_TYPEMASK)|((((unsigned long)(t))<<NODE_TYPESHIFT)&NODE_TYPEMASK))
25169#define NODE_LSHIFT (NODE_TYPESHIFT+7)
25170#define NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1)
25171#define nd_line(n) (int)(((SIGNED_VALUE)(n)->flags)>>NODE_LSHIFT)
25172#define nd_set_line(n,l) (n)->flags=(((n)->flags&~((VALUE)(-1)<<NODE_LSHIFT))|((VALUE)((l)&NODE_LMASK)<<NODE_LSHIFT))
25173#define nd_first_column(n) ((int)((n)->nd_loc.beg_pos.column))
25174#define nd_set_first_column(n,v) ((n)->nd_loc.beg_pos.column = (v))
25175#define nd_first_lineno(n) ((int)((n)->nd_loc.beg_pos.lineno))
25176#define nd_set_first_lineno(n,v) ((n)->nd_loc.beg_pos.lineno = (v))
25177#define nd_first_loc(n) ((n)->nd_loc.beg_pos)
25178#define nd_set_first_loc(n,v) (nd_first_loc(n) = (v))
25179#define nd_last_column(n) ((int)((n)->nd_loc.end_pos.column))
25180#define nd_set_last_column(n,v) ((n)->nd_loc.end_pos.column = (v))
25181#define nd_last_lineno(n) ((int)((n)->nd_loc.end_pos.lineno))
25182#define nd_set_last_lineno(n,v) ((n)->nd_loc.end_pos.lineno = (v))
25183#define nd_last_loc(n) ((n)->nd_loc.end_pos)
25184#define nd_set_last_loc(n,v) (nd_last_loc(n) = (v))
25185#define nd_node_id(n) ((n)->node_id)
25186#define nd_set_node_id(n,id) ((n)->node_id = (id))
25187#define nd_head u1.node
25188#define nd_alen u2.argc
25189#define nd_next u3.node
25190#define nd_cond u1.node
25191#define nd_body u2.node
25192#define nd_else u3.node
25193#define nd_resq u2.node
25194#define nd_ensr u3.node
25195#define nd_1st u1.node
25196#define nd_2nd u2.node
25197#define nd_stts u1.node
25198#define nd_entry u3.id
25199#define nd_vid u1.id
25200#define nd_var u1.node
25201#define nd_iter u3.node
25202#define nd_value u2.node
25203#define nd_aid u3.id
25204#define nd_lit u1.value
25205#define nd_recv u1.node
25206#define nd_mid u2.id
25207#define nd_args u3.node
25208#define nd_ainfo u3.args
25209#define nd_defn u3.node
25210#define nd_cpath u1.node
25211#define nd_super u3.node
25212#define nd_beg u1.node
25213#define nd_end u2.node
25214#define nd_state u3.state
25215#define nd_nth u2.argc
25216#define nd_alias u1.id
25217#define nd_orig u2.id
25218#define nd_undef u2.node
25219#define nd_brace u2.argc
25220#define nd_pconst u1.node
25221#define nd_pkwargs u2.node
25222#define nd_pkwrestarg u3.node
25223#define nd_apinfo u3.apinfo
25224#define nd_fpinfo u3.fpinfo
25225#define nd_tbl u1.tbl
25226#define nd_pid u1.id
25227#define nd_plen u2.argc
25228#define nd_cflag u2.id
25229#define nd_cval u3.value
25230#define nd_rval u2.value
25231#define nd_tag u1.id
25232#define NEW_NODE(t,a0,a1,a2,loc) rb_node_newnode((t),(VALUE)(a0),(VALUE)(a1),(VALUE)(a2),loc)
25233#define NEW_NODE_WITH_LOCALS(t,a1,a2,loc) node_newnode_with_locals(p, (t),(VALUE)(a1),(VALUE)(a2),loc)
25234#define NEW_DEFN(i,a,d,loc) NEW_NODE(NODE_DEFN,0,i,NEW_SCOPE(a,d,loc),loc)
25235#define NEW_DEFS(r,i,a,d,loc) NEW_NODE(NODE_DEFS,r,i,NEW_SCOPE(a,d,loc),loc)
25236#define NEW_SCOPE(a,b,loc) NEW_NODE_WITH_LOCALS(NODE_SCOPE,b,a,loc)
25237#define NEW_BLOCK(a,loc) NEW_NODE(NODE_BLOCK,a,0,0,loc)
25238#define NEW_IF(c,t,e,loc) NEW_NODE(NODE_IF,c,t,e,loc)
25239#define NEW_UNLESS(c,t,e,loc) NEW_NODE(NODE_UNLESS,c,t,e,loc)
25240#define NEW_CASE(h,b,loc) NEW_NODE(NODE_CASE,h,b,0,loc)
25241#define NEW_CASE2(b,loc) NEW_NODE(NODE_CASE2,0,b,0,loc)
25242#define NEW_CASE3(h,b,loc) NEW_NODE(NODE_CASE3,h,b,0,loc)
25243#define NEW_WHEN(c,t,e,loc) NEW_NODE(NODE_WHEN,c,t,e,loc)
25244#define NEW_IN(c,t,e,loc) NEW_NODE(NODE_IN,c,t,e,loc)
25245#define NEW_WHILE(c,b,n,loc) NEW_NODE(NODE_WHILE,c,b,n,loc)
25246#define NEW_UNTIL(c,b,n,loc) NEW_NODE(NODE_UNTIL,c,b,n,loc)
25247#define NEW_FOR(i,b,loc) NEW_NODE(NODE_FOR,0,b,i,loc)
25248#define NEW_FOR_MASGN(v,loc) NEW_NODE(NODE_FOR_MASGN,v,0,0,loc)
25249#define NEW_ITER(a,b,loc) NEW_NODE(NODE_ITER,0,NEW_SCOPE(a,b,loc),0,loc)
25250#define NEW_LAMBDA(a,b,loc) NEW_NODE(NODE_LAMBDA,0,NEW_SCOPE(a,b,loc),0,loc)
25251#define NEW_BREAK(s,loc) NEW_NODE(NODE_BREAK,s,0,0,loc)
25252#define NEW_NEXT(s,loc) NEW_NODE(NODE_NEXT,s,0,0,loc)
25253#define NEW_REDO(loc) NEW_NODE(NODE_REDO,0,0,0,loc)
25254#define NEW_RETRY(loc) NEW_NODE(NODE_RETRY,0,0,0,loc)
25255#define NEW_BEGIN(b,loc) NEW_NODE(NODE_BEGIN,0,b,0,loc)
25256#define NEW_RESCUE(b,res,e,loc) NEW_NODE(NODE_RESCUE,b,res,e,loc)
25257#define NEW_RESBODY(a,ex,n,loc) NEW_NODE(NODE_RESBODY,n,ex,a,loc)
25258#define NEW_ENSURE(b,en,loc) NEW_NODE(NODE_ENSURE,b,0,en,loc)
25259#define NEW_RETURN(s,loc) NEW_NODE(NODE_RETURN,s,0,0,loc)
25260#define NEW_YIELD(a,loc) NEW_NODE(NODE_YIELD,a,0,0,loc)
25261#define NEW_LIST(a,loc) NEW_NODE(NODE_LIST,a,1,0,loc)
25262#define NEW_ZLIST(loc) NEW_NODE(NODE_ZLIST,0,0,0,loc)
25263#define NEW_HASH(a,loc) NEW_NODE(NODE_HASH,a,0,0,loc)
25264#define NEW_MASGN(l,r,loc) NEW_NODE(NODE_MASGN,l,0,r,loc)
25265#define NEW_GASGN(v,val,loc) NEW_NODE(NODE_GASGN,v,val,v,loc)
25266#define NEW_LASGN(v,val,loc) NEW_NODE(NODE_LASGN,v,val,0,loc)
25267#define NEW_DASGN(v,val,loc) NEW_NODE(NODE_DASGN,v,val,0,loc)
25268#define NEW_IASGN(v,val,loc) NEW_NODE(NODE_IASGN,v,val,0,loc)
25269#define NEW_CDECL(v,val,path,loc) NEW_NODE(NODE_CDECL,v,val,path,loc)
25270#define NEW_CVASGN(v,val,loc) NEW_NODE(NODE_CVASGN,v,val,0,loc)
25271#define NEW_OP_ASGN1(p,id,a,loc) NEW_NODE(NODE_OP_ASGN1,p,id,a,loc)
25272#define NEW_OP_ASGN2(r,t,i,o,val,loc) NEW_NODE(NODE_OP_ASGN2,r,val,NEW_OP_ASGN22(i,o,t,loc),loc)
25273#define NEW_OP_ASGN22(i,o,t,loc) NEW_NODE(NODE_OP_ASGN2,i,o,t,loc)
25274#define NEW_OP_ASGN_OR(i,val,loc) NEW_NODE(NODE_OP_ASGN_OR,i,val,0,loc)
25275#define NEW_OP_ASGN_AND(i,val,loc) NEW_NODE(NODE_OP_ASGN_AND,i,val,0,loc)
25276#define NEW_OP_CDECL(v,op,val,loc) NEW_NODE(NODE_OP_CDECL,v,val,op,loc)
25277#define NEW_GVAR(v,loc) NEW_NODE(NODE_GVAR,v,0,v,loc)
25278#define NEW_LVAR(v,loc) NEW_NODE(NODE_LVAR,v,0,0,loc)
25279#define NEW_DVAR(v,loc) NEW_NODE(NODE_DVAR,v,0,0,loc)
25280#define NEW_IVAR(v,loc) NEW_NODE(NODE_IVAR,v,0,0,loc)
25281#define NEW_CONST(v,loc) NEW_NODE(NODE_CONST,v,0,0,loc)
25282#define NEW_CVAR(v,loc) NEW_NODE(NODE_CVAR,v,0,0,loc)
25283#define NEW_NTH_REF(n,loc) NEW_NODE(NODE_NTH_REF,0,n,0,loc)
25284#define NEW_BACK_REF(n,loc) NEW_NODE(NODE_BACK_REF,0,n,0,loc)
25285#define NEW_MATCH(c,loc) NEW_NODE(NODE_MATCH,c,0,0,loc)
25286#define NEW_MATCH2(n1,n2,loc) NEW_NODE(NODE_MATCH2,n1,n2,0,loc)
25287#define NEW_MATCH3(r,n2,loc) NEW_NODE(NODE_MATCH3,r,n2,0,loc)
25288#define NEW_LIT(l,loc) NEW_NODE(NODE_LIT,l,0,0,loc)
25289#define NEW_STR(s,loc) NEW_NODE(NODE_STR,s,0,0,loc)
25290#define NEW_DSTR(s,loc) NEW_NODE(NODE_DSTR,s,1,0,loc)
25291#define NEW_XSTR(s,loc) NEW_NODE(NODE_XSTR,s,0,0,loc)
25292#define NEW_DXSTR(s,loc) NEW_NODE(NODE_DXSTR,s,0,0,loc)
25293#define NEW_DSYM(s,loc) NEW_NODE(NODE_DSYM,s,0,0,loc)
25294#define NEW_EVSTR(n,loc) NEW_NODE(NODE_EVSTR,0,(n),0,loc)
25295#define NEW_CALL(r,m,a,loc) NEW_NODE(NODE_CALL,r,m,a,loc)
25296#define NEW_OPCALL(r,m,a,loc) NEW_NODE(NODE_OPCALL,r,m,a,loc)
25297#define NEW_FCALL(m,a,loc) NEW_NODE(NODE_FCALL,0,m,a,loc)
25298#define NEW_VCALL(m,loc) NEW_NODE(NODE_VCALL,0,m,0,loc)
25299#define NEW_SUPER(a,loc) NEW_NODE(NODE_SUPER,0,0,a,loc)
25300#define NEW_ZSUPER(loc) NEW_NODE(NODE_ZSUPER,0,0,0,loc)
25301#define NEW_ARGS_AUX(r,b,loc) NEW_NODE(NODE_ARGS_AUX,r,b,0,loc)
25302#define NEW_OPT_ARG(i,v,loc) NEW_NODE(NODE_OPT_ARG,i,v,0,loc)
25303#define NEW_KW_ARG(i,v,loc) NEW_NODE(NODE_KW_ARG,i,v,0,loc)
25304#define NEW_POSTARG(i,v,loc) NEW_NODE(NODE_POSTARG,i,v,0,loc)
25305#define NEW_ARGSCAT(a,b,loc) NEW_NODE(NODE_ARGSCAT,a,b,0,loc)
25306#define NEW_ARGSPUSH(a,b,loc) NEW_NODE(NODE_ARGSPUSH,a,b,0,loc)
25307#define NEW_SPLAT(a,loc) NEW_NODE(NODE_SPLAT,a,0,0,loc)
25308#define NEW_BLOCK_PASS(b,loc) NEW_NODE(NODE_BLOCK_PASS,0,b,0,loc)
25309#define NEW_ALIAS(n,o,loc) NEW_NODE(NODE_ALIAS,n,o,0,loc)
25310#define NEW_VALIAS(n,o,loc) NEW_NODE(NODE_VALIAS,n,o,0,loc)
25311#define NEW_UNDEF(i,loc) NEW_NODE(NODE_UNDEF,0,i,0,loc)
25312#define NEW_CLASS(n,b,s,loc) NEW_NODE(NODE_CLASS,n,NEW_SCOPE(0,b,loc),(s),loc)
25313#define NEW_SCLASS(r,b,loc) NEW_NODE(NODE_SCLASS,r,NEW_SCOPE(0,b,loc),0,loc)
25314#define NEW_MODULE(n,b,loc) NEW_NODE(NODE_MODULE,n,NEW_SCOPE(0,b,loc),0,loc)
25315#define NEW_COLON2(c,i,loc) NEW_NODE(NODE_COLON2,c,i,0,loc)
25316#define NEW_COLON3(i,loc) NEW_NODE(NODE_COLON3,0,i,0,loc)
25317#define NEW_DOT2(b,e,loc) NEW_NODE(NODE_DOT2,b,e,0,loc)
25318#define NEW_DOT3(b,e,loc) NEW_NODE(NODE_DOT3,b,e,0,loc)
25319#define NEW_SELF(loc) NEW_NODE(NODE_SELF,0,0,1,loc)
25320#define NEW_NIL(loc) NEW_NODE(NODE_NIL,0,0,0,loc)
25321#define NEW_TRUE(loc) NEW_NODE(NODE_TRUE,0,0,0,loc)
25322#define NEW_FALSE(loc) NEW_NODE(NODE_FALSE,0,0,0,loc)
25323#define NEW_ERRINFO(loc) NEW_NODE(NODE_ERRINFO,0,0,0,loc)
25324#define NEW_DEFINED(e,loc) NEW_NODE(NODE_DEFINED,e,0,0,loc)
25325#define NEW_PREEXE(b,loc) NEW_SCOPE(b,loc)
25326#define NEW_POSTEXE(b,loc) NEW_NODE(NODE_POSTEXE,0,b,0,loc)
25327#define NEW_ATTRASGN(r,m,a,loc) NEW_NODE(NODE_ATTRASGN,r,m,a,loc)
25328#define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)
25329#define NODE_REQUIRED_KEYWORD_P(node) ((node)->nd_value == NODE_SPECIAL_REQUIRED_KEYWORD)
25330#define NODE_SPECIAL_NO_NAME_REST ((NODE *)-1)
25331#define NODE_NAMED_REST_P(node) ((node) != NODE_SPECIAL_NO_NAME_REST)
25332#define NODE_SPECIAL_EXCESSIVE_COMMA ((ID)1)
25333#define NODE_SPECIAL_NO_REST_KEYWORD ((NODE *)-1)
25334#pragma GCC visibility push(default)
25335#pragma GCC visibility pop
25336#define RUBY_ATOMIC_H
25337#define RUBY_ATOMIC_GENERIC_MACRO 1
25338#define RUBY_ATOMIC_FETCH_ADD(var,val) rbimpl_atomic_fetch_add(&(var), (val))
25339#define RUBY_ATOMIC_FETCH_SUB(var,val) rbimpl_atomic_fetch_sub(&(var), (val))
25340#define RUBY_ATOMIC_OR(var,val) rbimpl_atomic_or(&(var), (val))
25341#define RUBY_ATOMIC_EXCHANGE(var,val) rbimpl_atomic_exchange(&(var), (val))
25342#define RUBY_ATOMIC_CAS(var,oldval,newval) rbimpl_atomic_cas(&(var), (oldval), (newval))
25343#define RUBY_ATOMIC_SET(var,val) rbimpl_atomic_set(&(var), (val))
25344#define RUBY_ATOMIC_ADD(var,val) rbimpl_atomic_add(&(var), (val))
25345#define RUBY_ATOMIC_SUB(var,val) rbimpl_atomic_sub(&(var), (val))
25346#define RUBY_ATOMIC_INC(var) rbimpl_atomic_inc(&(var))
25347#define RUBY_ATOMIC_DEC(var) rbimpl_atomic_dec(&(var))
25348#define RUBY_ATOMIC_SIZE_INC(var) rbimpl_atomic_size_inc(&(var))
25349#define RUBY_ATOMIC_SIZE_DEC(var) rbimpl_atomic_size_dec(&(var))
25350#define RUBY_ATOMIC_SIZE_EXCHANGE(var,val) rbimpl_atomic_size_exchange(&(var), (val))
25351#define RUBY_ATOMIC_SIZE_CAS(var,oldval,newval) rbimpl_atomic_size_cas(&(var), (oldval), (newval))
25352#define RUBY_ATOMIC_SIZE_ADD(var,val) rbimpl_atomic_size_add(&(var), (val))
25353#define RUBY_ATOMIC_SIZE_SUB(var,val) rbimpl_atomic_size_sub(&(var), (val))
25354#define RUBY_ATOMIC_PTR_EXCHANGE(var,val) RBIMPL_CAST(rbimpl_atomic_ptr_exchange((void **)&(var), (void *)val))
25355#define RUBY_ATOMIC_PTR_CAS(var,oldval,newval) RBIMPL_CAST(rbimpl_atomic_ptr_cas((void **)&(var), (oldval), (newval)))
25356#define RUBY_ATOMIC_VALUE_EXCHANGE(var,val) rbimpl_atomic_value_exchange(&(var), (val))
25357#define RUBY_ATOMIC_VALUE_CAS(var,oldval,newval) rbimpl_atomic_value_cas(&(var), (oldval), (newval))
25358#define ATOMIC_ADD(var,val) RUBY_ATOMIC_ADD(var, val)
25359#define ATOMIC_CAS(var,oldval,newval) RUBY_ATOMIC_CAS(var, oldval, newval)
25360#define ATOMIC_DEC(var) RUBY_ATOMIC_DEC(var)
25361#define ATOMIC_EXCHANGE(var,val) RUBY_ATOMIC_EXCHANGE(var, val)
25362#define ATOMIC_FETCH_ADD(var,val) RUBY_ATOMIC_FETCH_ADD(var, val)
25363#define ATOMIC_FETCH_SUB(var,val) RUBY_ATOMIC_FETCH_SUB(var, val)
25364#define ATOMIC_INC(var) RUBY_ATOMIC_INC(var)
25365#define ATOMIC_OR(var,val) RUBY_ATOMIC_OR(var, val)
25366#define ATOMIC_PTR_CAS(var,oldval,newval) RUBY_ATOMIC_PTR_CAS(var, oldval, newval)
25367#define ATOMIC_PTR_EXCHANGE(var,val) RUBY_ATOMIC_PTR_EXCHANGE(var, val)
25368#define ATOMIC_SET(var,val) RUBY_ATOMIC_SET(var, val)
25369#define ATOMIC_SIZE_ADD(var,val) RUBY_ATOMIC_SIZE_ADD(var, val)
25370#define ATOMIC_SIZE_CAS(var,oldval,newval) RUBY_ATOMIC_SIZE_CAS(var, oldval, newval)
25371#define ATOMIC_SIZE_DEC(var) RUBY_ATOMIC_SIZE_DEC(var)
25372#define ATOMIC_SIZE_EXCHANGE(var,val) RUBY_ATOMIC_SIZE_EXCHANGE(var, val)
25373#define ATOMIC_SIZE_INC(var) RUBY_ATOMIC_SIZE_INC(var)
25374#define ATOMIC_SIZE_SUB(var,val) RUBY_ATOMIC_SIZE_SUB(var, val)
25375#define ATOMIC_SUB(var,val) RUBY_ATOMIC_SUB(var, val)
25376#define ATOMIC_VALUE_CAS(var,oldval,val) RUBY_ATOMIC_VALUE_CAS(var, oldval, val)
25377#define ATOMIC_VALUE_EXCHANGE(var,val) RUBY_ATOMIC_VALUE_EXCHANGE(var, val)
25378#define RUBY_VM_OPTS_H
25379#define OPT_TAILCALL_OPTIMIZATION 0
25380#define OPT_PEEPHOLE_OPTIMIZATION 1
25381#define OPT_SPECIALISED_INSTRUCTION 1
25382#define OPT_INLINE_CONST_CACHE 1
25383#define OPT_FROZEN_STRING_LITERAL 0
25384#define OPT_DEBUG_FROZEN_STRING_LITERAL 0
25385#define OPT_THREADED_CODE 0
25386#define OPT_DIRECT_THREADED_CODE (OPT_THREADED_CODE == 0)
25387#define OPT_TOKEN_THREADED_CODE (OPT_THREADED_CODE == 1)
25388#define OPT_CALL_THREADED_CODE (OPT_THREADED_CODE == 2)
25389#define OPT_CHECKED_RUN 1
25390#define OPT_INLINE_METHOD_CACHE 1
25391#define OPT_GLOBAL_METHOD_CACHE 1
25392#define OPT_BLOCKINLINING 0
25393#define OPT_IC_FOR_IVAR 1
25394#define OPT_OPERANDS_UNIFICATION 1
25395#define OPT_INSTRUCTIONS_UNIFICATION 0
25396#define OPT_UNIFY_ALL_COMBINATION 0
25397#define OPT_STACK_CACHING 0
25398#define OPT_SUPPORT_JOKE 0
25399#define OPT_SUPPORT_CALL_C_FUNCTION 0
25400#define VM_COLLECT_USAGE_DETAILS 0
25401#define RUBY_DARRAY_H
25402#define rb_darray(T) struct { rb_darray_meta_t meta; T data[]; } *
25403#define rb_darray_get(ary,idx) ((ary)->data[(idx)])
25404#define rb_darray_set(ary,idx,element) ((ary)->data[(idx)] = (element))
25405#define rb_darray_ref(ary,idx) (&((ary)->data[(idx)]))
25406#define rb_darray_append(ptr_to_ary,element) ( rb_darray_ensure_space((ptr_to_ary), sizeof(**(ptr_to_ary)), sizeof((*(ptr_to_ary))->data[0])) ? ( rb_darray_set(*(ptr_to_ary), (*(ptr_to_ary))->meta.size, (element)), ++((*(ptr_to_ary))->meta.size), 1 ) : 0)
25407#define rb_darray_back(ary) ((ary)->data[(ary)->meta.size - 1])
25408#define rb_darray_pop_back(ary) ((ary)->meta.size--)
25409#define rb_darray_remove_unordered(ary,idx) do { rb_darray_set(ary, idx, rb_darray_back(ary)); rb_darray_pop_back(ary); } while (0);
25410#define rb_darray_foreach(ary,idx_name,elem_ptr_var) for (int idx_name = 0; idx_name < rb_darray_size(ary) && ((elem_ptr_var) = rb_darray_ref(ary, idx_name)); ++idx_name)
25411#define rb_darray_for(ary,idx_name) for (int idx_name = 0; idx_name < rb_darray_size(ary); ++idx_name)
25412#define rb_darray_make(ptr_to_ary,size) rb_darray_make_impl((ptr_to_ary), size, sizeof(**(ptr_to_ary)), sizeof((*(ptr_to_ary))->data[0]))
25413#define rb_darray_clear(ary) (ary->meta.size = 0)
25414#define RUBY_THREAD_NATIVE_H 1
25415#define _PTHREAD_H 1
25417#define __need_size_t
25419#undef __need_ptrdiff_t
25420#undef __need_size_t
25421#undef __need_wchar_t
25423#define NULL ((void *)0)
25425#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
25426#define _BITS_SCHED_H 1
25427#define SCHED_OTHER 0
25428#define SCHED_FIFO 1
25430#define SCHED_BATCH 3
25432#define SCHED_IDLE 5
25433#define SCHED_DEADLINE 6
25434#define SCHED_RESET_ON_FORK 0x40000000
25435#define CSIGNAL 0x000000ff
25436#define CLONE_VM 0x00000100
25437#define CLONE_FS 0x00000200
25438#define CLONE_FILES 0x00000400
25439#define CLONE_SIGHAND 0x00000800
25440#define CLONE_PIDFD 0x00001000
25441#define CLONE_PTRACE 0x00002000
25442#define CLONE_VFORK 0x00004000
25443#define CLONE_PARENT 0x00008000
25444#define CLONE_THREAD 0x00010000
25445#define CLONE_NEWNS 0x00020000
25446#define CLONE_SYSVSEM 0x00040000
25447#define CLONE_SETTLS 0x00080000
25448#define CLONE_PARENT_SETTID 0x00100000
25449#define CLONE_CHILD_CLEARTID 0x00200000
25450#define CLONE_DETACHED 0x00400000
25451#define CLONE_UNTRACED 0x00800000
25452#define CLONE_CHILD_SETTID 0x01000000
25453#define CLONE_NEWCGROUP 0x02000000
25454#define CLONE_NEWUTS 0x04000000
25455#define CLONE_NEWIPC 0x08000000
25456#define CLONE_NEWUSER 0x10000000
25457#define CLONE_NEWPID 0x20000000
25458#define CLONE_NEWNET 0x40000000
25459#define CLONE_IO 0x80000000
25460#define _BITS_TYPES_STRUCT_SCHED_PARAM 1
25461#define _BITS_CPU_SET_H 1
25462#define __CPU_SETSIZE 1024
25463#define __NCPUBITS (8 * sizeof (__cpu_mask))
25464#define __CPUELT(cpu) ((cpu) / __NCPUBITS)
25465#define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS))
25466#define __CPU_ZERO_S(setsize,cpusetp) do __builtin_memset (cpusetp, '\0', setsize); while (0)
25467#define __CPU_SET_S(cpu,setsize,cpusetp) (__extension__ ({ size_t __cpu = (cpu); __cpu / 8 < (setsize) ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] |= __CPUMASK (__cpu)) : 0; }))
25468#define __CPU_CLR_S(cpu,setsize,cpusetp) (__extension__ ({ size_t __cpu = (cpu); __cpu / 8 < (setsize) ? (((__cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] &= ~__CPUMASK (__cpu)) : 0; }))
25469#define __CPU_ISSET_S(cpu,setsize,cpusetp) (__extension__ ({ size_t __cpu = (cpu); __cpu / 8 < (setsize) ? ((((const __cpu_mask *) ((cpusetp)->__bits))[__CPUELT (__cpu)] & __CPUMASK (__cpu))) != 0 : 0; }))
25470#define __CPU_COUNT_S(setsize,cpusetp) __sched_cpucount (setsize, cpusetp)
25471#define __CPU_EQUAL_S(setsize,cpusetp1,cpusetp2) (__builtin_memcmp (cpusetp1, cpusetp2, setsize) == 0)
25472#define __CPU_OP_S(setsize,destset,srcset1,srcset2,op) (__extension__ ({ cpu_set_t *__dest = (destset); const __cpu_mask *__arr1 = (srcset1)->__bits; const __cpu_mask *__arr2 = (srcset2)->__bits; size_t __imax = (setsize) / sizeof (__cpu_mask); size_t __i; for (__i = 0; __i < __imax; ++__i) ((__cpu_mask *) __dest->__bits)[__i] = __arr1[__i] op __arr2[__i]; __dest; }))
25473#define __CPU_ALLOC_SIZE(count) ((((count) + __NCPUBITS - 1) / __NCPUBITS) * sizeof (__cpu_mask))
25474#define __CPU_ALLOC(count) __sched_cpualloc (count)
25475#define __CPU_FREE(cpuset) __sched_cpufree (cpuset)
25476#define sched_priority sched_priority
25477#define __sched_priority sched_priority
25478#define CPU_SETSIZE __CPU_SETSIZE
25479#define CPU_SET(cpu,cpusetp) __CPU_SET_S (cpu, sizeof (cpu_set_t), cpusetp)
25480#define CPU_CLR(cpu,cpusetp) __CPU_CLR_S (cpu, sizeof (cpu_set_t), cpusetp)
25481#define CPU_ISSET(cpu,cpusetp) __CPU_ISSET_S (cpu, sizeof (cpu_set_t), cpusetp)
25482#define CPU_ZERO(cpusetp) __CPU_ZERO_S (sizeof (cpu_set_t), cpusetp)
25483#define CPU_COUNT(cpusetp) __CPU_COUNT_S (sizeof (cpu_set_t), cpusetp)
25484#define CPU_SET_S(cpu,setsize,cpusetp) __CPU_SET_S (cpu, setsize, cpusetp)
25485#define CPU_CLR_S(cpu,setsize,cpusetp) __CPU_CLR_S (cpu, setsize, cpusetp)
25486#define CPU_ISSET_S(cpu,setsize,cpusetp) __CPU_ISSET_S (cpu, setsize, cpusetp)
25487#define CPU_ZERO_S(setsize,cpusetp) __CPU_ZERO_S (setsize, cpusetp)
25488#define CPU_COUNT_S(setsize,cpusetp) __CPU_COUNT_S (setsize, cpusetp)
25489#define CPU_EQUAL(cpusetp1,cpusetp2) __CPU_EQUAL_S (sizeof (cpu_set_t), cpusetp1, cpusetp2)
25490#define CPU_EQUAL_S(setsize,cpusetp1,cpusetp2) __CPU_EQUAL_S (setsize, cpusetp1, cpusetp2)
25491#define CPU_AND(destset,srcset1,srcset2) __CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, &)
25492#define CPU_OR(destset,srcset1,srcset2) __CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, |)
25493#define CPU_XOR(destset,srcset1,srcset2) __CPU_OP_S (sizeof (cpu_set_t), destset, srcset1, srcset2, ^)
25494#define CPU_AND_S(setsize,destset,srcset1,srcset2) __CPU_OP_S (setsize, destset, srcset1, srcset2, &)
25495#define CPU_OR_S(setsize,destset,srcset1,srcset2) __CPU_OP_S (setsize, destset, srcset1, srcset2, |)
25496#define CPU_XOR_S(setsize,destset,srcset1,srcset2) __CPU_OP_S (setsize, destset, srcset1, srcset2, ^)
25497#define CPU_ALLOC_SIZE(count) __CPU_ALLOC_SIZE (count)
25498#define CPU_ALLOC(count) __CPU_ALLOC (count)
25499#define CPU_FREE(cpuset) __CPU_FREE (cpuset)
25500#define __WORDSIZE 64
25501#define __WORDSIZE_TIME64_COMPAT32 1
25502#define __SYSCALL_WORDSIZE 64
25503#define PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_JOINABLE
25504#define PTHREAD_CREATE_DETACHED PTHREAD_CREATE_DETACHED
25505#define PTHREAD_MUTEX_INITIALIZER { { __PTHREAD_MUTEX_INITIALIZER (PTHREAD_MUTEX_TIMED_NP) } }
25506#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP { { __PTHREAD_MUTEX_INITIALIZER (PTHREAD_MUTEX_RECURSIVE_NP) } }
25507#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP { { __PTHREAD_MUTEX_INITIALIZER (PTHREAD_MUTEX_ERRORCHECK_NP) } }
25508#define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP { { __PTHREAD_MUTEX_INITIALIZER (PTHREAD_MUTEX_ADAPTIVE_NP) } }
25509#define PTHREAD_RWLOCK_INITIALIZER { { __PTHREAD_RWLOCK_INITIALIZER (PTHREAD_RWLOCK_DEFAULT_NP) } }
25510#define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP { { __PTHREAD_RWLOCK_INITIALIZER (PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP) } }
25511#define PTHREAD_INHERIT_SCHED PTHREAD_INHERIT_SCHED
25512#define PTHREAD_EXPLICIT_SCHED PTHREAD_EXPLICIT_SCHED
25513#define PTHREAD_SCOPE_SYSTEM PTHREAD_SCOPE_SYSTEM
25514#define PTHREAD_SCOPE_PROCESS PTHREAD_SCOPE_PROCESS
25515#define PTHREAD_PROCESS_PRIVATE PTHREAD_PROCESS_PRIVATE
25516#define PTHREAD_PROCESS_SHARED PTHREAD_PROCESS_SHARED
25517#define PTHREAD_COND_INITIALIZER { { {0}, {0}, {0, 0}, {0, 0}, 0, 0, {0, 0} } }
25518#define PTHREAD_CANCEL_ENABLE PTHREAD_CANCEL_ENABLE
25519#define PTHREAD_CANCEL_DISABLE PTHREAD_CANCEL_DISABLE
25520#define PTHREAD_CANCEL_DEFERRED PTHREAD_CANCEL_DEFERRED
25521#define PTHREAD_CANCEL_ASYNCHRONOUS PTHREAD_CANCEL_ASYNCHRONOUS
25522#define PTHREAD_CANCELED ((void *) -1)
25523#define PTHREAD_ONCE_INIT 0
25524#define PTHREAD_BARRIER_SERIAL_THREAD -1
25525#define PTHREAD_ATTR_NO_SIGMASK_NP (-1)
25526#define __cleanup_fct_attribute
25527#define pthread_cleanup_push(routine,arg) do { __pthread_unwind_buf_t __cancel_buf; void (*__cancel_routine) (void *) = (routine); void *__cancel_arg = (arg); int __not_first_call = __sigsetjmp_cancel (__cancel_buf.__cancel_jmp_buf, 0); if (__glibc_unlikely (__not_first_call)) { __cancel_routine (__cancel_arg); __pthread_unwind_next (&__cancel_buf); } __pthread_register_cancel (&__cancel_buf); do {
25528#define pthread_cleanup_pop(execute) do { } while (0); } while (0); __pthread_unregister_cancel (&__cancel_buf); if (execute) __cancel_routine (__cancel_arg); } while (0)
25529#define pthread_cleanup_push_defer_np(routine,arg) do { __pthread_unwind_buf_t __cancel_buf; void (*__cancel_routine) (void *) = (routine); void *__cancel_arg = (arg); int __not_first_call = __sigsetjmp_cancel (__cancel_buf.__cancel_jmp_buf, 0); if (__glibc_unlikely (__not_first_call)) { __cancel_routine (__cancel_arg); __pthread_unwind_next (&__cancel_buf); } __pthread_register_cancel_defer (&__cancel_buf); do {
25530#define pthread_cleanup_pop_restore_np(execute) do { } while (0); } while (0); __pthread_unregister_cancel_restore (&__cancel_buf); if (execute) __cancel_routine (__cancel_arg); } while (0)
25531#pragma GCC visibility push(default)
25532#pragma GCC visibility pop
25533#define RUBY_THREAD_PTHREAD_H
25534#define RB_NATIVETHREAD_LOCK_INIT PTHREAD_MUTEX_INITIALIZER
25535#define RB_NATIVETHREAD_COND_INIT PTHREAD_COND_INITIALIZER
25540#define RB_THREAD_LOCAL_SPECIFIER __thread
25541#pragma GCC visibility push(default)
25542#pragma GCC visibility pop
25543#define RUBY_VM_THREAD_MODEL 2
25544#define VM_INSN_INFO_TABLE_IMPL 2
25545#define RUBY_NSIG NSIG
25546#define RUBY_SIGCHLD (SIGCLD)
25547#define SIGCHLD_LOSSY (0)
25548#define WAITPID_USE_SIGCHLD (RUBY_SIGCHLD || SIGCHLD_LOSSY)
25549#define USE_SIGALTSTACK
25550#define RB_ALTSTACK_INIT(var,altstack) var = rb_register_sigaltstack(altstack)
25551#define RB_ALTSTACK_FREE(var) free(var)
25552#define RB_ALTSTACK(var) var
25553#define TAG_NONE RUBY_TAG_NONE
25554#define TAG_RETURN RUBY_TAG_RETURN
25555#define TAG_BREAK RUBY_TAG_BREAK
25556#define TAG_NEXT RUBY_TAG_NEXT
25557#define TAG_RETRY RUBY_TAG_RETRY
25558#define TAG_REDO RUBY_TAG_REDO
25559#define TAG_RAISE RUBY_TAG_RAISE
25560#define TAG_THROW RUBY_TAG_THROW
25561#define TAG_FATAL RUBY_TAG_FATAL
25562#define TAG_MASK RUBY_TAG_MASK
25563#define GET_IC_SERIAL(ice) (ice)->ic_serial.raw
25564#define SET_IC_SERIAL(ice,v) (ice)->ic_serial.raw = (v)
25565#define CoreDataFromValue(obj,type) (type*)DATA_PTR(obj)
25566#define GetCoreDataFromValue(obj,type,ptr) ((ptr) = CoreDataFromValue((obj), type))
25567#define PATHOBJ_PATH 0
25568#define PATHOBJ_REALPATH 1
25569#define USE_LAZY_LOAD 0
25570#define GetVMPtr(obj,ptr) GetCoreDataFromValue((obj), rb_vm_t, (ptr))
25571#define VM_GLOBAL_CC_CACHE_TABLE_SIZE 1023
25572#define RUBY_VM_SIZE_ALIGN 4096
25573#define RUBY_VM_THREAD_VM_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
25574#define RUBY_VM_THREAD_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
25575#define RUBY_VM_THREAD_MACHINE_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
25576#define RUBY_VM_THREAD_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
25577#define RUBY_VM_FIBER_VM_STACK_SIZE ( 16 * 1024 * sizeof(VALUE))
25578#define RUBY_VM_FIBER_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
25579#define RUBY_VM_FIBER_MACHINE_STACK_SIZE ( 64 * 1024 * sizeof(VALUE))
25580#define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
25581#define INTEGER_REDEFINED_OP_FLAG (1 << 0)
25582#define FLOAT_REDEFINED_OP_FLAG (1 << 1)
25583#define STRING_REDEFINED_OP_FLAG (1 << 2)
25584#define ARRAY_REDEFINED_OP_FLAG (1 << 3)
25585#define HASH_REDEFINED_OP_FLAG (1 << 4)
25586#define SYMBOL_REDEFINED_OP_FLAG (1 << 6)
25587#define TIME_REDEFINED_OP_FLAG (1 << 7)
25588#define REGEXP_REDEFINED_OP_FLAG (1 << 8)
25589#define NIL_REDEFINED_OP_FLAG (1 << 9)
25590#define TRUE_REDEFINED_OP_FLAG (1 << 10)
25591#define FALSE_REDEFINED_OP_FLAG (1 << 11)
25592#define PROC_REDEFINED_OP_FLAG (1 << 12)
25593#define BASIC_OP_UNREDEFINED_P(op,klass) (LIKELY((GET_VM()->redefined_flag[(op)]&(klass)) == 0))
25594#define VM_DEBUG_BP_CHECK 0
25595#define VM_DEBUG_VERIFY_METHOD_CACHE (VMDEBUG != 0)
25596#define rb_execution_context_t rb_execution_context_t
25597#define VM_CORE_H_EC_DEFINED 1
25598#define RB_THREAD_T_HAS_NATIVE_ID
25599#define VM_DEFINECLASS_TYPE(x) ((rb_vm_defineclass_type_t)(x) & VM_DEFINECLASS_TYPE_MASK)
25600#define VM_DEFINECLASS_FLAG_SCOPED 0x08
25601#define VM_DEFINECLASS_FLAG_HAS_SUPERCLASS 0x10
25602#define VM_DEFINECLASS_SCOPED_P(x) ((x) & VM_DEFINECLASS_FLAG_SCOPED)
25603#define VM_DEFINECLASS_HAS_SUPERCLASS_P(x) ((x) & VM_DEFINECLASS_FLAG_HAS_SUPERCLASS)
25604#pragma GCC visibility push(default)
25605#pragma GCC visibility pop
25606#define GetProcPtr(obj,ptr) GetCoreDataFromValue((obj), rb_proc_t, (ptr))
25607#pragma GCC visibility push(default)
25608#pragma GCC visibility pop
25609#define GetBindingPtr(obj,ptr) GetCoreDataFromValue((obj), rb_binding_t, (ptr))
25610#define VM_CHECKMATCH_TYPE_MASK 0x03
25611#define VM_CHECKMATCH_ARRAY 0x04
25612#define FUNC_FASTCALL(x) x
25613#define VM_TAGGED_PTR_SET(p,tag) ((VALUE)(p) | (tag))
25614#define VM_TAGGED_PTR_REF(v,mask) ((void *)((v) & ~mask))
25615#define GC_GUARDED_PTR(p) VM_TAGGED_PTR_SET((p), 0x01)
25616#define GC_GUARDED_PTR_REF(p) VM_TAGGED_PTR_REF((p), 0x03)
25617#define GC_GUARDED_PTR_P(p) (((VALUE)(p)) & 0x01)
25618#define VM_ENV_DATA_SIZE ( 3)
25619#define VM_ENV_DATA_INDEX_ME_CREF (-2)
25620#define VM_ENV_DATA_INDEX_SPECVAL (-1)
25621#define VM_ENV_DATA_INDEX_FLAGS ( 0)
25622#define VM_ENV_DATA_INDEX_ENV ( 1)
25623#define VM_ENV_INDEX_LAST_LVAR (-VM_ENV_DATA_SIZE)
25624#define RUBYVM_CFUNC_FRAME_P(cfp) (VM_FRAME_TYPE(cfp) == VM_FRAME_MAGIC_CFUNC)
25625#define VM_GUARDED_PREV_EP(ep) GC_GUARDED_PTR(ep)
25626#define VM_BLOCK_HANDLER_NONE 0
25627#define RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp) ((cfp)+1)
25628#define RUBY_VM_NEXT_CONTROL_FRAME(cfp) ((cfp)-1)
25629#define RUBY_VM_VALID_CONTROL_FRAME_P(cfp,ecfp) ((void *)(ecfp) > (void *)(cfp))
25630#define SDR() rb_vmdebug_stack_dump_raw(GET_EC(), GET_EC()->cfp)
25631#define SDR2(cfp) rb_vmdebug_stack_dump_raw(GET_EC(), (cfp))
25632#pragma GCC visibility push(default)
25633#pragma GCC visibility pop
25634#define rb_vm_register_special_exception(sp,e,m) rb_vm_register_special_exception_str(sp, e, rb_usascii_str_new_static((m), (long)rb_strlen_lit(m)))
25635#define sysstack_error GET_VM()->special_exceptions[ruby_error_sysstack]
25636#define CHECK_VM_STACK_OVERFLOW0(cfp,sp,margin) do { STATIC_ASSERT(sizeof_sp, sizeof(*(sp)) == sizeof(VALUE)); STATIC_ASSERT(sizeof_cfp, sizeof(*(cfp)) == sizeof(rb_control_frame_t)); const struct rb_control_frame_struct *bound = (void *)&(sp)[(margin)]; if (UNLIKELY((cfp) <= &bound[1])) { vm_stackoverflow(); } } while (0)
25637#define CHECK_VM_STACK_OVERFLOW(cfp,margin) CHECK_VM_STACK_OVERFLOW0((cfp), (cfp)->sp, (margin))
25638#pragma GCC visibility push(default)
25639#pragma GCC visibility pop
25640#define GET_VM() rb_current_vm()
25641#define GET_RACTOR() rb_current_ractor()
25642#define GET_THREAD() rb_current_thread()
25643#define GET_EC() rb_current_execution_context(true)
25644#define RUBY_VM_SET_TIMER_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TIMER_INTERRUPT_MASK)
25645#define RUBY_VM_SET_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, PENDING_INTERRUPT_MASK)
25646#define RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, POSTPONED_JOB_INTERRUPT_MASK)
25647#define RUBY_VM_SET_TRAP_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TRAP_INTERRUPT_MASK)
25648#define RUBY_VM_SET_TERMINATE_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TERMINATE_INTERRUPT_MASK)
25649#define RUBY_VM_SET_VM_BARRIER_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, VM_BARRIER_INTERRUPT_MASK)
25650#define RUBY_VM_INTERRUPTED(ec) ((ec)->interrupt_flag & ~(ec)->interrupt_mask & (PENDING_INTERRUPT_MASK|TRAP_INTERRUPT_MASK))
25651#define RUBY_VM_CHECK_INTS(ec) rb_vm_check_ints(ec)
25652#define EXEC_EVENT_HOOK_ORIG(ec_,hooks_,flag_,self_,id_,called_id_,klass_,data_,pop_p_) do { const rb_event_flag_t flag_arg_ = (flag_); rb_hook_list_t *hooks_arg_ = (hooks_); if (UNLIKELY((hooks_arg_)->events & (flag_arg_))) { rb_exec_event_hook_orig(ec_, hooks_arg_, flag_arg_, self_, id_, called_id_, klass_, data_, pop_p_); } } while (0)
25653#define EXEC_EVENT_HOOK(ec_,flag_,self_,id_,called_id_,klass_,data_) EXEC_EVENT_HOOK_ORIG(ec_, rb_ec_ractor_hooks(ec_), flag_, self_, id_, called_id_, klass_, data_, 0)
25654#define EXEC_EVENT_HOOK_AND_POP_FRAME(ec_,flag_,self_,id_,called_id_,klass_,data_) EXEC_EVENT_HOOK_ORIG(ec_, rb_ec_ractor_hooks(ec_), flag_, self_, id_, called_id_, klass_, data_, 1)
25655#pragma GCC visibility push(default)
25656#define RUBY_EVENT_COVERAGE_LINE 0x010000
25657#define RUBY_EVENT_COVERAGE_BRANCH 0x020000
25658#pragma GCC visibility pop
25659#define PASS_PASSED_BLOCK_HANDLER_EC(ec) pass_passed_block_handler(ec)
25660#define PASS_PASSED_BLOCK_HANDLER() pass_passed_block_handler(GET_EC())
25661#define ruby_setjmp(env) RUBY_SETJMP(env)
25662#define ruby_longjmp(env,val) RUBY_LONGJMP((env),(val))
25664#define _BITS_ERRNO_H 1
25665#define _ASM_GENERIC_ERRNO_H
25666#define _ASM_GENERIC_ERRNO_BASE_H
25702#define ENAMETOOLONG 36
25705#define ENOTEMPTY 39
25707#define EWOULDBLOCK EAGAIN
25724#define EDEADLOCK EDEADLK
25738#define EMULTIHOP 72
25741#define EOVERFLOW 75
25755#define EDESTADDRREQ 89
25757#define EPROTOTYPE 91
25758#define ENOPROTOOPT 92
25759#define EPROTONOSUPPORT 93
25760#define ESOCKTNOSUPPORT 94
25761#define EOPNOTSUPP 95
25762#define EPFNOSUPPORT 96
25763#define EAFNOSUPPORT 97
25764#define EADDRINUSE 98
25765#define EADDRNOTAVAIL 99
25766#define ENETDOWN 100
25767#define ENETUNREACH 101
25768#define ENETRESET 102
25769#define ECONNABORTED 103
25770#define ECONNRESET 104
25773#define ENOTCONN 107
25774#define ESHUTDOWN 108
25775#define ETOOMANYREFS 109
25776#define ETIMEDOUT 110
25777#define ECONNREFUSED 111
25778#define EHOSTDOWN 112
25779#define EHOSTUNREACH 113
25780#define EALREADY 114
25781#define EINPROGRESS 115
25787#define EREMOTEIO 121
25789#define ENOMEDIUM 123
25790#define EMEDIUMTYPE 124
25791#define ECANCELED 125
25793#define EKEYEXPIRED 127
25794#define EKEYREVOKED 128
25795#define EKEYREJECTED 129
25796#define EOWNERDEAD 130
25797#define ENOTRECOVERABLE 131
25799#define EHWPOISON 133
25800#define ENOTSUP EOPNOTSUPP
25801#define errno (*__errno_location ())
25802#define __error_t_defined 1
25803#define _SYS_PARAM_H 1
25805#undef __need_ptrdiff_t
25806#undef __need_size_t
25807#undef __need_wchar_t
25809#define NULL ((void *)0)
25811#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
25812#define __undef_ARG_MAX
25813#define _LINUX_PARAM_H
25814#define __ASM_GENERIC_PARAM_H
25816#define EXEC_PAGESIZE 4096
25817#define NOGROUP (-1)
25818#define MAXHOSTNAMELEN 64
25820#undef __undef_ARG_MAX
25821#define MAXSYMLINKS 20
25823#define NCARGS 131072
25824#define NBBY CHAR_BIT
25825#define NGROUPS NGROUPS_MAX
25826#define CANBSIZ MAX_CANON
25827#define MAXPATHLEN PATH_MAX
25828#define NODEV ((dev_t) -1)
25829#define DEV_BSIZE 512
25830#define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY))
25831#define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
25832#define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY)))
25833#define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
25834#define howmany(x,y) (((x) + ((y) - 1)) / (y))
25835#define roundup(x,y) (__builtin_constant_p (y) && powerof2 (y) ? (((x) + (y) - 1) & ~((y) - 1)) : ((((x) + ((y) - 1)) / (y)) * (y)))
25836#define powerof2(x) ((((x) - 1) & (x)) == 0)
25837#define MIN(a,b) (((a)<(b))?(a):(b))
25838#define MAX(a,b) (((a)>(b))?(a):(b))
25839#define SAVE_ROOT_JMPBUF(th,stmt) do if (true) { stmt; } else if (th) { } while (0)
25840#define EC_PUSH_TAG(ec) do { rb_execution_context_t * const _ec = (ec); struct rb_vm_tag _tag; _tag.state = TAG_NONE; _tag.tag = Qundef; _tag.prev = _ec->tag; _tag.lock_rec = rb_ec_vm_lock_rec(_ec);
25841#define EC_POP_TAG() _ec->tag = _tag.prev; } while (0)
25842#define EC_TMPPOP_TAG() _ec->tag = _tag.prev
25843#define EC_REPUSH_TAG() (void)(_ec->tag = &_tag)
25844#define VAR_FROM_MEMORY(var) (var)
25845#define VAR_INITIALIZED(var) ((void)&(var))
25846#define VAR_NOCLOBBERED(var) var
25847#define EC_EXEC_TAG() (ruby_setjmp(_tag.buf) ? rb_ec_tag_state(VAR_FROM_MEMORY(_ec)) : (EC_REPUSH_TAG(), 0))
25848#define EC_JUMP_TAG(ec,st) rb_ec_tag_jump(ec, st)
25849#define INTERNAL_EXCEPTION_P(exc) FIXNUM_P(exc)
25850#define CREF_FL_PUSHED_BY_EVAL IMEMO_FL_USER1
25851#define CREF_FL_OMOD_SHARED IMEMO_FL_USER2
25852#define CREF_FL_SINGLETON IMEMO_FL_USER3
25853#pragma GCC diagnostic push
25854#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
25855#pragma GCC diagnostic pop
25856#define rb_ec_raised_set(ec,f) ((ec)->raised_flag |= (f))
25857#define rb_ec_raised_reset(ec,f) ((ec)->raised_flag &= ~(f))
25858#define rb_ec_raised_p(ec,f) (((ec)->raised_flag & (f)) != 0)
25859#define rb_ec_raised_clear(ec) ((ec)->raised_flag = 0)
25860#define CharNext(p) rb_char_next(p)
25862#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("movq\t%%rsp, %0" : "=r" (*(p)))
25863#define RB_GC_SAVE_MACHINE_CONTEXT(th) do { FLUSH_REGISTER_WINDOWS; setjmp((th)->ec->machine.regs); SET_MACHINE_STACK_END(&(th)->ec->machine.stack_end); } while (0)
25864#define RUBY_MARK_FREE_DEBUG 0
25865#define RUBY_MARK_ENTER(msg)
25866#define RUBY_MARK_LEAVE(msg)
25867#define RUBY_FREE_ENTER(msg)
25868#define RUBY_FREE_LEAVE(msg)
25869#define RUBY_GC_INFO if(0)printf
25870#define RUBY_MARK_MOVABLE_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark_movable(markobj);} } while (0)
25871#define RUBY_MARK_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark(markobj);} } while (0)
25872#define RUBY_FREE_UNLESS_NULL(ptr) if(ptr){ruby_xfree(ptr);(ptr)=NULL;}
25873#define STACK_UPPER(x,a,b) (b)
25874#define STACK_GROW_DIR_DETECTION
25875#define STACK_DIR_UPPER(a,b) STACK_UPPER(0, (a), (b))
25876#define IS_STACK_DIR_UPPER() STACK_DIR_UPPER(1,0)
25877#pragma GCC visibility push(default)
25878#pragma GCC visibility pop
25879#define INTERNAL_COMPILE_H
25880#pragma GCC visibility push(default)
25881#pragma GCC visibility pop
25882#define INTERNAL_CONT_H
25883#define INTERNAL_ERROR_H
25884#define INTERNAL_STRING_H
25885#define RUBY_ENCODING_H 1
25886#define RUBY_INTERNAL_ENCODING_CODERANGE_H
25887#pragma GCC visibility push(default)
25888#define ENC_CODERANGE_MASK RUBY_ENC_CODERANGE_MASK
25889#define ENC_CODERANGE_UNKNOWN RUBY_ENC_CODERANGE_UNKNOWN
25890#define ENC_CODERANGE_7BIT RUBY_ENC_CODERANGE_7BIT
25891#define ENC_CODERANGE_VALID RUBY_ENC_CODERANGE_VALID
25892#define ENC_CODERANGE_BROKEN RUBY_ENC_CODERANGE_BROKEN
25893#define ENC_CODERANGE_CLEAN_P(cr) RB_ENC_CODERANGE_CLEAN_P(cr)
25894#define ENC_CODERANGE(obj) RB_ENC_CODERANGE(obj)
25895#define ENC_CODERANGE_ASCIIONLY(obj) RB_ENC_CODERANGE_ASCIIONLY(obj)
25896#define ENC_CODERANGE_SET(obj,cr) RB_ENC_CODERANGE_SET(obj,cr)
25897#define ENC_CODERANGE_CLEAR(obj) RB_ENC_CODERANGE_CLEAR(obj)
25898#define ENC_CODERANGE_AND(a,b) RB_ENC_CODERANGE_AND(a, b)
25899#define ENCODING_CODERANGE_SET(obj,encindex,cr) RB_ENCODING_CODERANGE_SET(obj, encindex, cr)
25900#define RB_ENC_CODERANGE RB_ENC_CODERANGE
25901#define RB_ENC_CODERANGE_AND RB_ENC_CODERANGE_AND
25902#define RB_ENC_CODERANGE_ASCIIONLY RB_ENC_CODERANGE_ASCIIONLY
25903#define RB_ENC_CODERANGE_CLEAN_P RB_ENC_CODERANGE_CLEAN_P
25904#define RB_ENC_CODERANGE_CLEAR RB_ENC_CODERANGE_CLEAR
25905#define RB_ENC_CODERANGE_SET RB_ENC_CODERANGE_SET
25906#pragma GCC visibility pop
25907#define RUBY_INTERNAL_ENCODING_CTYPE_H
25909#define ONIGMO_VERSION_MAJOR 6
25910#define ONIGMO_VERSION_MINOR 1
25911#define ONIGMO_VERSION_TEENY 3
25912#define ONIG_EXTERN RUBY_EXTERN
25913#pragma GCC visibility push(default)
25914#define UChar OnigUChar
25915#define ONIG_INFINITE_DISTANCE ~((OnigDistance )0)
25916#define OnigCodePointMaskWidth 3
25917#define OnigCodePointMask ((1<<OnigCodePointMaskWidth)-1)
25918#define OnigCodePointCount(n) ((n)&OnigCodePointMask)
25919#define OnigCaseFoldFlags(n) ((n)&~OnigCodePointMask)
25920#define OnigSpecialIndexShift 3
25921#define OnigSpecialIndexWidth 10
25922#define ONIGENC_CASE_UPCASE (1<<13)
25923#define ONIGENC_CASE_DOWNCASE (1<<14)
25924#define ONIGENC_CASE_TITLECASE (1<<15)
25925#define ONIGENC_CASE_SPECIAL_OFFSET 3
25926#define ONIGENC_CASE_UP_SPECIAL (1<<16)
25927#define ONIGENC_CASE_DOWN_SPECIAL (1<<17)
25928#define ONIGENC_CASE_MODIFIED (1<<18)
25929#define ONIGENC_CASE_FOLD (1<<19)
25930#define ONIGENC_CASE_FOLD_TURKISH_AZERI (1<<20)
25931#define ONIGENC_CASE_FOLD_LITHUANIAN (1<<21)
25932#define ONIGENC_CASE_ASCII_ONLY (1<<22)
25933#define ONIGENC_CASE_IS_TITLECASE (1<<23)
25934#define INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR (1<<30)
25935#define ONIGENC_CASE_FOLD_MIN INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR
25936#define ONIGENC_CASE_FOLD_DEFAULT OnigDefaultCaseFoldFlag
25937#define ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN 3
25938#define ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM 13
25939#define ONIGENC_CODE_RANGE_NUM(range) ((int )range[0])
25940#define ONIGENC_CODE_RANGE_FROM(range,i) range[((i)*2) + 1]
25941#define ONIGENC_CODE_RANGE_TO(range,i) range[((i)*2) + 2]
25942#define ONIG_ENCODING_ASCII (&OnigEncodingASCII)
25943#define ONIG_ENCODING_UNDEF ((OnigEncoding )0)
25944#define ONIGENC_CODE_TO_MBC_MAXLEN 7
25945#define ONIGENC_MBC_CASE_FOLD_MAXLEN 18
25946#define ONIGENC_CTYPE_NEWLINE 0
25947#define ONIGENC_CTYPE_ALPHA 1
25948#define ONIGENC_CTYPE_BLANK 2
25949#define ONIGENC_CTYPE_CNTRL 3
25950#define ONIGENC_CTYPE_DIGIT 4
25951#define ONIGENC_CTYPE_GRAPH 5
25952#define ONIGENC_CTYPE_LOWER 6
25953#define ONIGENC_CTYPE_PRINT 7
25954#define ONIGENC_CTYPE_PUNCT 8
25955#define ONIGENC_CTYPE_SPACE 9
25956#define ONIGENC_CTYPE_UPPER 10
25957#define ONIGENC_CTYPE_XDIGIT 11
25958#define ONIGENC_CTYPE_WORD 12
25959#define ONIGENC_CTYPE_ALNUM 13
25960#define ONIGENC_CTYPE_ASCII 14
25961#define ONIGENC_MAX_STD_CTYPE ONIGENC_CTYPE_ASCII
25962#define ONIGENC_FLAG_NONE 0U
25963#define ONIGENC_FLAG_UNICODE 1U
25964#define onig_enc_len(enc,p,e) ONIGENC_MBC_ENC_LEN(enc, p, e)
25965#define ONIGENC_IS_UNDEF(enc) ((enc) == ONIG_ENCODING_UNDEF)
25966#define ONIGENC_IS_SINGLEBYTE(enc) (ONIGENC_MBC_MAXLEN(enc) == 1)
25967#define ONIGENC_IS_MBC_HEAD(enc,p,e) (ONIGENC_MBC_ENC_LEN(enc,p,e) != 1)
25968#define ONIGENC_IS_MBC_ASCII(p) (*(p) < 128)
25969#define ONIGENC_IS_CODE_ASCII(code) ((code) < 128)
25970#define ONIGENC_IS_MBC_WORD(enc,s,end) ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end))
25971#define ONIGENC_IS_MBC_ASCII_WORD(enc,s,end) onigenc_ascii_is_code_ctype( ONIGENC_MBC_TO_CODE(enc,s,end),ONIGENC_CTYPE_WORD,enc)
25972#define ONIGENC_IS_UNICODE(enc) ((enc)->flags & ONIGENC_FLAG_UNICODE)
25973#define ONIGENC_NAME(enc) ((enc)->name)
25974#define ONIGENC_MBC_CASE_FOLD(enc,flag,pp,end,buf) (enc)->mbc_case_fold(flag,(const OnigUChar** )pp,end,buf,enc)
25975#define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) (enc)->is_allowed_reverse_match(s,end,enc)
25976#define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s,end) (enc)->left_adjust_char_head(start, s, end, enc)
25977#define ONIGENC_APPLY_ALL_CASE_FOLD(enc,case_fold_flag,f,arg) (enc)->apply_all_case_fold(case_fold_flag,f,arg,enc)
25978#define ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc,case_fold_flag,p,end,acs) (enc)->get_case_fold_codes_by_str(case_fold_flag,p,end,acs,enc)
25979#define ONIGENC_STEP_BACK(enc,start,s,end,n) onigenc_step_back((enc),(start),(s),(end),(n))
25980#define ONIGENC_CONSTRUCT_MBCLEN_CHARFOUND(n) (n)
25981#define ONIGENC_MBCLEN_CHARFOUND_P(r) (0 < (r))
25982#define ONIGENC_MBCLEN_CHARFOUND_LEN(r) (r)
25983#define ONIGENC_CONSTRUCT_MBCLEN_INVALID() (-1)
25984#define ONIGENC_MBCLEN_INVALID_P(r) ((r) == -1)
25985#define ONIGENC_CONSTRUCT_MBCLEN_NEEDMORE(n) (-1-(n))
25986#define ONIGENC_MBCLEN_NEEDMORE_P(r) ((r) < -1)
25987#define ONIGENC_MBCLEN_NEEDMORE_LEN(r) (-1-(r))
25988#define ONIGENC_PRECISE_MBC_ENC_LEN(enc,p,e) (enc)->precise_mbc_enc_len(p,e,enc)
25989#define ONIGENC_MBC_ENC_LEN(enc,p,e) onigenc_mbclen_approximate(p,e,enc)
25990#define ONIGENC_MBC_MAXLEN(enc) ((enc)->max_enc_len)
25991#define ONIGENC_MBC_MAXLEN_DIST(enc) ONIGENC_MBC_MAXLEN(enc)
25992#define ONIGENC_MBC_MINLEN(enc) ((enc)->min_enc_len)
25993#define ONIGENC_IS_MBC_NEWLINE(enc,p,end) (enc)->is_mbc_newline((p),(end),enc)
25994#define ONIGENC_MBC_TO_CODE(enc,p,end) (enc)->mbc_to_code((p),(end),enc)
25995#define ONIGENC_CODE_TO_MBCLEN(enc,code) (enc)->code_to_mbclen(code,enc)
25996#define ONIGENC_CODE_TO_MBC(enc,code,buf) (enc)->code_to_mbc(code,buf,enc)
25997#define ONIGENC_PROPERTY_NAME_TO_CTYPE(enc,p,end) (enc)->property_name_to_ctype(enc,p,end)
25998#define ONIGENC_IS_CODE_CTYPE(enc,code,ctype) (enc)->is_code_ctype(code,ctype,enc)
25999#define ONIGENC_IS_CODE_NEWLINE(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_NEWLINE)
26000#define ONIGENC_IS_CODE_GRAPH(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_GRAPH)
26001#define ONIGENC_IS_CODE_PRINT(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PRINT)
26002#define ONIGENC_IS_CODE_ALNUM(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALNUM)
26003#define ONIGENC_IS_CODE_ALPHA(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALPHA)
26004#define ONIGENC_IS_CODE_LOWER(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_LOWER)
26005#define ONIGENC_IS_CODE_UPPER(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_UPPER)
26006#define ONIGENC_IS_CODE_CNTRL(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_CNTRL)
26007#define ONIGENC_IS_CODE_PUNCT(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PUNCT)
26008#define ONIGENC_IS_CODE_SPACE(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_SPACE)
26009#define ONIGENC_IS_CODE_BLANK(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_BLANK)
26010#define ONIGENC_IS_CODE_DIGIT(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_DIGIT)
26011#define ONIGENC_IS_CODE_XDIGIT(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_XDIGIT)
26012#define ONIGENC_IS_CODE_WORD(enc,code) ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_WORD)
26013#define ONIGENC_GET_CTYPE_CODE_RANGE(enc,ctype,sbout,ranges) (enc)->get_ctype_code_range(ctype,sbout,ranges,enc)
26014#define ONIG_NREGION 4
26015#define ONIG_MAX_CAPTURE_GROUP_NUM 32767
26016#define ONIG_MAX_BACKREF_NUM 1000
26017#define ONIG_MAX_REPEAT_NUM 100000
26018#define ONIG_MAX_MULTI_BYTE_RANGES_NUM 10000
26019#define ONIG_MAX_ERROR_MESSAGE_LEN 90
26020#define ONIG_OPTION_DEFAULT ONIG_OPTION_NONE
26021#define ONIG_OPTION_NONE 0U
26022#define ONIG_OPTION_IGNORECASE 1U
26023#define ONIG_OPTION_EXTEND (ONIG_OPTION_IGNORECASE << 1)
26024#define ONIG_OPTION_MULTILINE (ONIG_OPTION_EXTEND << 1)
26025#define ONIG_OPTION_DOTALL ONIG_OPTION_MULTILINE
26026#define ONIG_OPTION_SINGLELINE (ONIG_OPTION_MULTILINE << 1)
26027#define ONIG_OPTION_FIND_LONGEST (ONIG_OPTION_SINGLELINE << 1)
26028#define ONIG_OPTION_FIND_NOT_EMPTY (ONIG_OPTION_FIND_LONGEST << 1)
26029#define ONIG_OPTION_NEGATE_SINGLELINE (ONIG_OPTION_FIND_NOT_EMPTY << 1)
26030#define ONIG_OPTION_DONT_CAPTURE_GROUP (ONIG_OPTION_NEGATE_SINGLELINE << 1)
26031#define ONIG_OPTION_CAPTURE_GROUP (ONIG_OPTION_DONT_CAPTURE_GROUP << 1)
26032#define ONIG_OPTION_NOTBOL (ONIG_OPTION_CAPTURE_GROUP << 1)
26033#define ONIG_OPTION_NOTEOL (ONIG_OPTION_NOTBOL << 1)
26034#define ONIG_OPTION_NOTBOS (ONIG_OPTION_NOTEOL << 1)
26035#define ONIG_OPTION_NOTEOS (ONIG_OPTION_NOTBOS << 1)
26036#define ONIG_OPTION_ASCII_RANGE (ONIG_OPTION_NOTEOS << 1)
26037#define ONIG_OPTION_POSIX_BRACKET_ALL_RANGE (ONIG_OPTION_ASCII_RANGE << 1)
26038#define ONIG_OPTION_WORD_BOUND_ALL_RANGE (ONIG_OPTION_POSIX_BRACKET_ALL_RANGE << 1)
26039#define ONIG_OPTION_NEWLINE_CRLF (ONIG_OPTION_WORD_BOUND_ALL_RANGE << 1)
26040#define ONIG_OPTION_MAXBIT ONIG_OPTION_NEWLINE_CRLF
26041#define ONIG_OPTION_ON(options,regopt) ((options) |= (regopt))
26042#define ONIG_OPTION_OFF(options,regopt) ((options) &= ~(regopt))
26043#define ONIG_IS_OPTION_ON(options,option) ((options) & (option))
26044#define ONIG_SYNTAX_ASIS (&OnigSyntaxASIS)
26045#define ONIG_SYNTAX_POSIX_BASIC (&OnigSyntaxPosixBasic)
26046#define ONIG_SYNTAX_POSIX_EXTENDED (&OnigSyntaxPosixExtended)
26047#define ONIG_SYNTAX_EMACS (&OnigSyntaxEmacs)
26048#define ONIG_SYNTAX_GREP (&OnigSyntaxGrep)
26049#define ONIG_SYNTAX_GNU_REGEX (&OnigSyntaxGnuRegex)
26050#define ONIG_SYNTAX_JAVA (&OnigSyntaxJava)
26051#define ONIG_SYNTAX_PERL58 (&OnigSyntaxPerl58)
26052#define ONIG_SYNTAX_PERL58_NG (&OnigSyntaxPerl58_NG)
26053#define ONIG_SYNTAX_PERL (&OnigSyntaxPerl)
26054#define ONIG_SYNTAX_RUBY (&OnigSyntaxRuby)
26055#define ONIG_SYNTAX_PYTHON (&OnigSyntaxPython)
26056#define ONIG_SYNTAX_DEFAULT OnigDefaultSyntax
26057#define ONIG_SYN_OP_VARIABLE_META_CHARACTERS (1U<<0)
26058#define ONIG_SYN_OP_DOT_ANYCHAR (1U<<1)
26059#define ONIG_SYN_OP_ASTERISK_ZERO_INF (1U<<2)
26060#define ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF (1U<<3)
26061#define ONIG_SYN_OP_PLUS_ONE_INF (1U<<4)
26062#define ONIG_SYN_OP_ESC_PLUS_ONE_INF (1U<<5)
26063#define ONIG_SYN_OP_QMARK_ZERO_ONE (1U<<6)
26064#define ONIG_SYN_OP_ESC_QMARK_ZERO_ONE (1U<<7)
26065#define ONIG_SYN_OP_BRACE_INTERVAL (1U<<8)
26066#define ONIG_SYN_OP_ESC_BRACE_INTERVAL (1U<<9)
26067#define ONIG_SYN_OP_VBAR_ALT (1U<<10)
26068#define ONIG_SYN_OP_ESC_VBAR_ALT (1U<<11)
26069#define ONIG_SYN_OP_LPAREN_SUBEXP (1U<<12)
26070#define ONIG_SYN_OP_ESC_LPAREN_SUBEXP (1U<<13)
26071#define ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR (1U<<14)
26072#define ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR (1U<<15)
26073#define ONIG_SYN_OP_DECIMAL_BACKREF (1U<<16)
26074#define ONIG_SYN_OP_BRACKET_CC (1U<<17)
26075#define ONIG_SYN_OP_ESC_W_WORD (1U<<18)
26076#define ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END (1U<<19)
26077#define ONIG_SYN_OP_ESC_B_WORD_BOUND (1U<<20)
26078#define ONIG_SYN_OP_ESC_S_WHITE_SPACE (1U<<21)
26079#define ONIG_SYN_OP_ESC_D_DIGIT (1U<<22)
26080#define ONIG_SYN_OP_LINE_ANCHOR (1U<<23)
26081#define ONIG_SYN_OP_POSIX_BRACKET (1U<<24)
26082#define ONIG_SYN_OP_QMARK_NON_GREEDY (1U<<25)
26083#define ONIG_SYN_OP_ESC_CONTROL_CHARS (1U<<26)
26084#define ONIG_SYN_OP_ESC_C_CONTROL (1U<<27)
26085#define ONIG_SYN_OP_ESC_OCTAL3 (1U<<28)
26086#define ONIG_SYN_OP_ESC_X_HEX2 (1U<<29)
26087#define ONIG_SYN_OP_ESC_X_BRACE_HEX8 (1U<<30)
26088#define ONIG_SYN_OP_ESC_O_BRACE_OCTAL (1U<<31)
26089#define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE (1U<<0)
26090#define ONIG_SYN_OP2_QMARK_GROUP_EFFECT (1U<<1)
26091#define ONIG_SYN_OP2_OPTION_PERL (1U<<2)
26092#define ONIG_SYN_OP2_OPTION_RUBY (1U<<3)
26093#define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT (1U<<4)
26094#define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL (1U<<5)
26095#define ONIG_SYN_OP2_CCLASS_SET_OP (1U<<6)
26096#define ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP (1U<<7)
26097#define ONIG_SYN_OP2_ESC_K_NAMED_BACKREF (1U<<8)
26098#define ONIG_SYN_OP2_ESC_G_SUBEXP_CALL (1U<<9)
26099#define ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY (1U<<10)
26100#define ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL (1U<<11)
26101#define ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META (1U<<12)
26102#define ONIG_SYN_OP2_ESC_V_VTAB (1U<<13)
26103#define ONIG_SYN_OP2_ESC_U_HEX4 (1U<<14)
26104#define ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR (1U<<15)
26105#define ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY (1U<<16)
26106#define ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT (1U<<17)
26107#define ONIG_SYN_OP2_ESC_H_XDIGIT (1U<<19)
26108#define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE (1U<<20)
26109#define ONIG_SYN_OP2_ESC_CAPITAL_R_LINEBREAK (1U<<21)
26110#define ONIG_SYN_OP2_ESC_CAPITAL_X_EXTENDED_GRAPHEME_CLUSTER (1U<<22)
26111#define ONIG_SYN_OP2_ESC_V_VERTICAL_WHITESPACE (1U<<23)
26112#define ONIG_SYN_OP2_ESC_H_HORIZONTAL_WHITESPACE (1U<<24)
26113#define ONIG_SYN_OP2_ESC_CAPITAL_K_KEEP (1U<<25)
26114#define ONIG_SYN_OP2_ESC_G_BRACE_BACKREF (1U<<26)
26115#define ONIG_SYN_OP2_QMARK_SUBEXP_CALL (1U<<27)
26116#define ONIG_SYN_OP2_QMARK_VBAR_BRANCH_RESET (1U<<28)
26117#define ONIG_SYN_OP2_QMARK_LPAREN_CONDITION (1U<<29)
26118#define ONIG_SYN_OP2_QMARK_CAPITAL_P_NAMED_GROUP (1U<<30)
26119#define ONIG_SYN_OP2_QMARK_TILDE_ABSENT (1U<<31)
26120#define ONIG_SYN_CONTEXT_INDEP_ANCHORS (1U<<31)
26121#define ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS (1U<<0)
26122#define ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS (1U<<1)
26123#define ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP (1U<<2)
26124#define ONIG_SYN_ALLOW_INVALID_INTERVAL (1U<<3)
26125#define ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV (1U<<4)
26126#define ONIG_SYN_STRICT_CHECK_BACKREF (1U<<5)
26127#define ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND (1U<<6)
26128#define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP (1U<<7)
26129#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1U<<8)
26130#define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY (1U<<9)
26131#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME_CALL (1U<<10)
26132#define ONIG_SYN_USE_LEFT_MOST_NAMED_GROUP (1U<<11)
26133#define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC (1U<<20)
26134#define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC (1U<<21)
26135#define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC (1U<<22)
26136#define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC (1U<<23)
26137#define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED (1U<<24)
26138#define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT (1U<<25)
26139#define ONIG_SYN_WARN_CC_DUP (1U<<26)
26140#define ONIG_META_CHAR_ESCAPE 0
26141#define ONIG_META_CHAR_ANYCHAR 1
26142#define ONIG_META_CHAR_ANYTIME 2
26143#define ONIG_META_CHAR_ZERO_OR_ONE_TIME 3
26144#define ONIG_META_CHAR_ONE_OR_MORE_TIME 4
26145#define ONIG_META_CHAR_ANYCHAR_ANYTIME 5
26146#define ONIG_INEFFECTIVE_META_CHAR 0
26147#define ONIG_IS_PATTERN_ERROR(ecode) ((ecode) <= -100 && (ecode) > -1000)
26148#define ONIG_NORMAL 0
26149#define ONIG_MISMATCH -1
26150#define ONIG_NO_SUPPORT_CONFIG -2
26151#define ONIGERR_MEMORY -5
26152#define ONIGERR_TYPE_BUG -6
26153#define ONIGERR_PARSER_BUG -11
26154#define ONIGERR_STACK_BUG -12
26155#define ONIGERR_UNDEFINED_BYTECODE -13
26156#define ONIGERR_UNEXPECTED_BYTECODE -14
26157#define ONIGERR_MATCH_STACK_LIMIT_OVER -15
26158#define ONIGERR_PARSE_DEPTH_LIMIT_OVER -16
26159#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SET -21
26160#define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR -22
26161#define ONIGERR_INVALID_ARGUMENT -30
26162#define ONIGERR_END_PATTERN_AT_LEFT_BRACE -100
26163#define ONIGERR_END_PATTERN_AT_LEFT_BRACKET -101
26164#define ONIGERR_EMPTY_CHAR_CLASS -102
26165#define ONIGERR_PREMATURE_END_OF_CHAR_CLASS -103
26166#define ONIGERR_END_PATTERN_AT_ESCAPE -104
26167#define ONIGERR_END_PATTERN_AT_META -105
26168#define ONIGERR_END_PATTERN_AT_CONTROL -106
26169#define ONIGERR_META_CODE_SYNTAX -108
26170#define ONIGERR_CONTROL_CODE_SYNTAX -109
26171#define ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE -110
26172#define ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE -111
26173#define ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS -112
26174#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED -113
26175#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID -114
26176#define ONIGERR_NESTED_REPEAT_OPERATOR -115
26177#define ONIGERR_UNMATCHED_CLOSE_PARENTHESIS -116
26178#define ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS -117
26179#define ONIGERR_END_PATTERN_IN_GROUP -118
26180#define ONIGERR_UNDEFINED_GROUP_OPTION -119
26181#define ONIGERR_INVALID_POSIX_BRACKET_TYPE -121
26182#define ONIGERR_INVALID_LOOK_BEHIND_PATTERN -122
26183#define ONIGERR_INVALID_REPEAT_RANGE_PATTERN -123
26184#define ONIGERR_INVALID_CONDITION_PATTERN -124
26185#define ONIGERR_TOO_BIG_NUMBER -200
26186#define ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE -201
26187#define ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE -202
26188#define ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS -203
26189#define ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE -204
26190#define ONIGERR_TOO_MANY_MULTI_BYTE_RANGES -205
26191#define ONIGERR_TOO_SHORT_MULTI_BYTE_STRING -206
26192#define ONIGERR_TOO_BIG_BACKREF_NUMBER -207
26193#define ONIGERR_INVALID_BACKREF -208
26194#define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED -209
26195#define ONIGERR_TOO_MANY_CAPTURE_GROUPS -210
26196#define ONIGERR_TOO_SHORT_DIGITS -211
26197#define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE -212
26198#define ONIGERR_EMPTY_GROUP_NAME -214
26199#define ONIGERR_INVALID_GROUP_NAME -215
26200#define ONIGERR_INVALID_CHAR_IN_GROUP_NAME -216
26201#define ONIGERR_UNDEFINED_NAME_REFERENCE -217
26202#define ONIGERR_UNDEFINED_GROUP_REFERENCE -218
26203#define ONIGERR_MULTIPLEX_DEFINED_NAME -219
26204#define ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL -220
26205#define ONIGERR_NEVER_ENDING_RECURSION -221
26206#define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY -222
26207#define ONIGERR_INVALID_CHAR_PROPERTY_NAME -223
26208#define ONIGERR_INVALID_CODE_POINT_VALUE -400
26209#define ONIGERR_INVALID_WIDE_CHAR_VALUE -400
26210#define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE -401
26211#define ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION -402
26212#define ONIGERR_INVALID_COMBINATION_OF_OPTIONS -403
26213#define ONIG_MAX_CAPTURE_HISTORY_GROUP 31
26214#define ONIG_IS_CAPTURE_HISTORY_GROUP(r,i) ((i) <= ONIG_MAX_CAPTURE_HISTORY_GROUP && (r)->list && (r)->list[i])
26215#define ONIG_TRAVERSE_CALLBACK_AT_FIRST 1
26216#define ONIG_TRAVERSE_CALLBACK_AT_LAST 2
26217#define ONIG_TRAVERSE_CALLBACK_AT_BOTH ( ONIG_TRAVERSE_CALLBACK_AT_FIRST | ONIG_TRAVERSE_CALLBACK_AT_LAST )
26218#define ONIG_REGION_NOTPOS -1
26219#define ONIG_NULL_WARN onig_null_warn
26220#define ONIG_CHAR_TABLE_SIZE 256
26221#pragma GCC visibility pop
26222#define RUBY_INTERNAL_ENCODING_ENCODING_H
26225#define ONIGURUMA_VERSION_MAJOR ONIGMO_VERSION_MAJOR
26226#define ONIGURUMA_VERSION_MINOR ONIGMO_VERSION_MINOR
26227#define ONIGURUMA_VERSION_TEENY ONIGMO_VERSION_TEENY
26228#pragma GCC visibility push(default)
26229#define ENCODING_INLINE_MAX RUBY_ENCODING_INLINE_MAX
26230#define ENCODING_SHIFT RUBY_ENCODING_SHIFT
26231#define ENCODING_MASK RUBY_ENCODING_MASK
26232#define ENCODING_SET_INLINED(obj,i) RB_ENCODING_SET_INLINED(obj,i)
26233#define ENCODING_SET(obj,i) RB_ENCODING_SET(obj,i)
26234#define ENCODING_GET_INLINED(obj) RB_ENCODING_GET_INLINED(obj)
26235#define ENCODING_GET(obj) RB_ENCODING_GET(obj)
26236#define ENCODING_IS_ASCII8BIT(obj) RB_ENCODING_IS_ASCII8BIT(obj)
26237#define ENCODING_MAXNAMELEN RUBY_ENCODING_MAXNAMELEN
26238#define MBCLEN_CHARFOUND_P(ret) ONIGENC_MBCLEN_CHARFOUND_P(ret)
26239#define MBCLEN_CHARFOUND_LEN(ret) ONIGENC_MBCLEN_CHARFOUND_LEN(ret)
26240#define MBCLEN_INVALID_P(ret) ONIGENC_MBCLEN_INVALID_P(ret)
26241#define MBCLEN_NEEDMORE_P(ret) ONIGENC_MBCLEN_NEEDMORE_P(ret)
26242#define MBCLEN_NEEDMORE_LEN(ret) ONIGENC_MBCLEN_NEEDMORE_LEN(ret)
26243#pragma GCC visibility pop
26244#define RB_ENCODING_GET RB_ENCODING_GET
26245#define RB_ENCODING_GET_INLINED RB_ENCODING_GET_INLINED
26246#define RB_ENCODING_IS_ASCII8BIT RB_ENCODING_IS_ASCII8BIT
26247#define RB_ENCODING_SET RB_ENCODING_SET
26248#define RB_ENCODING_SET_INLINED RB_ENCODING_SET_INLINED
26249#define rb_enc_asciicompat rb_enc_asciicompat
26250#define rb_enc_code_to_mbclen rb_enc_code_to_mbclen
26251#define rb_enc_codepoint rb_enc_codepoint
26252#define rb_enc_left_char_head rb_enc_left_char_head
26253#define rb_enc_mbc_to_codepoint rb_enc_mbc_to_codepoint
26254#define rb_enc_mbcput rb_enc_mbcput
26255#define rb_enc_mbmaxlen rb_enc_mbmaxlen
26256#define rb_enc_mbminlen rb_enc_mbminlen
26257#define rb_enc_name rb_enc_name
26258#define rb_enc_prev_char rb_enc_prev_char
26259#define rb_enc_right_char_head rb_enc_right_char_head
26260#define rb_enc_step_back rb_enc_step_back
26261#define rb_enc_str_asciicompat_p rb_enc_str_asciicompat_p
26262#pragma GCC visibility push(default)
26263#pragma GCC visibility pop
26264#define rb_enc_is_newline rb_enc_is_newline
26265#define rb_enc_isalnum rb_enc_isalnum
26266#define rb_enc_isalpha rb_enc_isalpha
26267#define rb_enc_isascii rb_enc_isascii
26268#define rb_enc_isctype rb_enc_isctype
26269#define rb_enc_isdigit rb_enc_isdigit
26270#define rb_enc_islower rb_enc_islower
26271#define rb_enc_isprint rb_enc_isprint
26272#define rb_enc_ispunct rb_enc_ispunct
26273#define rb_enc_isspace rb_enc_isspace
26274#define rb_enc_isupper rb_enc_isupper
26275#define RUBY_INTERNAL_ENCODING_PATHNAME_H
26276#pragma GCC visibility push(default)
26277#pragma GCC visibility pop
26278#define RUBY_INTERNAL_ENCODING_RE_H
26279#pragma GCC visibility push(default)
26280#pragma GCC visibility pop
26281#define RUBY_INTERNAL_ENCODING_SPRINTF_H
26282#pragma GCC visibility push(default)
26283#pragma GCC visibility pop
26284#define RUBY_INTERNAL_ENCODING_STRING_H
26285#pragma GCC visibility push(default)
26286#define rb_enc_str_new(str,len,enc) ((RBIMPL_CONSTANT_P(str) && RBIMPL_CONSTANT_P(len) ? rb_enc_str_new_static: rb_enc_str_new) ((str), (len), (enc)))
26287#define rb_enc_str_new_cstr(str,enc) ((RBIMPL_CONSTANT_P(str) ? rbimpl_enc_str_new_cstr : rb_enc_str_new_cstr) ((str), (enc)))
26288#pragma GCC visibility pop
26289#define RUBY_INTERNAL_ENCODING_SYMBOL_H
26290#pragma GCC visibility push(default)
26291#pragma GCC visibility pop
26292#define RUBY_INTERNAL_ENCODING_TRANSCODE_H
26293#pragma GCC visibility push(default)
26294#define ECONV_ERROR_HANDLER_MASK RUBY_ECONV_ERROR_HANDLER_MASK
26295#define ECONV_INVALID_MASK RUBY_ECONV_INVALID_MASK
26296#define ECONV_INVALID_REPLACE RUBY_ECONV_INVALID_REPLACE
26297#define ECONV_UNDEF_MASK RUBY_ECONV_UNDEF_MASK
26298#define ECONV_UNDEF_REPLACE RUBY_ECONV_UNDEF_REPLACE
26299#define ECONV_UNDEF_HEX_CHARREF RUBY_ECONV_UNDEF_HEX_CHARREF
26300#define ECONV_DECORATOR_MASK RUBY_ECONV_DECORATOR_MASK
26301#define ECONV_NEWLINE_DECORATOR_MASK RUBY_ECONV_NEWLINE_DECORATOR_MASK
26302#define ECONV_NEWLINE_DECORATOR_READ_MASK RUBY_ECONV_NEWLINE_DECORATOR_READ_MASK
26303#define ECONV_NEWLINE_DECORATOR_WRITE_MASK RUBY_ECONV_NEWLINE_DECORATOR_WRITE_MASK
26304#define ECONV_UNIVERSAL_NEWLINE_DECORATOR RUBY_ECONV_UNIVERSAL_NEWLINE_DECORATOR
26305#define ECONV_CRLF_NEWLINE_DECORATOR RUBY_ECONV_CRLF_NEWLINE_DECORATOR
26306#define ECONV_CR_NEWLINE_DECORATOR RUBY_ECONV_CR_NEWLINE_DECORATOR
26307#define ECONV_XML_TEXT_DECORATOR RUBY_ECONV_XML_TEXT_DECORATOR
26308#define ECONV_XML_ATTR_CONTENT_DECORATOR RUBY_ECONV_XML_ATTR_CONTENT_DECORATOR
26309#define ECONV_STATEFUL_DECORATOR_MASK RUBY_ECONV_STATEFUL_DECORATOR_MASK
26310#define ECONV_XML_ATTR_QUOTE_DECORATOR RUBY_ECONV_XML_ATTR_QUOTE_DECORATOR
26311#define ECONV_DEFAULT_NEWLINE_DECORATOR RUBY_ECONV_DEFAULT_NEWLINE_DECORATOR
26312#define ECONV_PARTIAL_INPUT RUBY_ECONV_PARTIAL_INPUT
26313#define ECONV_AFTER_OUTPUT RUBY_ECONV_AFTER_OUTPUT
26314#pragma GCC visibility pop
26315#define STR_NOEMBED FL_USER1
26316#define STR_SHARED FL_USER2
26317#undef rb_fstring_cstr
26318#pragma GCC visibility push(default)
26319#pragma GCC visibility pop
26320#pragma GCC visibility push(default)
26321#pragma GCC visibility pop
26322#define rb_fstring_lit(str) rb_fstring_new((str), rb_strlen_lit(str))
26323#define rb_fstring_literal(str) rb_fstring_lit(str)
26324#define rb_fstring_enc_lit(str,enc) rb_fstring_enc_new((str), rb_strlen_lit(str), (enc))
26325#define rb_fstring_enc_literal(str,enc) rb_fstring_enc_lit(str, enc)
26326#define rb_fstring_cstr(str) (__builtin_constant_p(str) ? rb_fstring_new((str), (long)strlen(str)) : (rb_fstring_cstr)(str))
26328#define rb_raise_static(e,m) rb_raise_cstr_i((e), rb_str_new_static((m), rb_strlen_lit(m)))
26329#define rb_sys_fail_path(path) rb_sys_fail_path_in(RUBY_FUNCTION_NAME_STRING, path)
26330#define rb_syserr_fail_path(err,path) rb_syserr_fail_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path))
26331#define rb_syserr_new_path(err,path) rb_syserr_new_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path))
26332#define rb_warn_deprecated_to_remove_at(removal,...) rb_warn_deprecated_to_remove(#removal, __VA_ARGS__)
26333#define RUBY_VERSION_SINCE(major,minor) 0
26334#define RUBY_VERSION_BEFORE(major,minor) 0
26335#define RBIMPL_TODO0(x)
26336#define RBIMPL_TODO(message) RBIMPL_TODO0("TODO: " message)
26337#define rb_typeddata_is_instance_of rb_typeddata_is_instance_of_inline
26338#pragma GCC visibility push(default)
26339#pragma GCC visibility pop
26340#define INTERNAL_EVAL_H
26341#define id_signo ruby_static_id_signo
26342#define id_status ruby_static_id_status
26343#define INTERNAL_INITS_H
26344#define INTERNAL_OBJECT_H
26345#define INTERNAL_CLASS_H
26346#define RUBY_ID_TABLE_H 1
26347#define RCLASS_EXT(c) (RCLASS(c)->ptr)
26348#define RCLASS_IV_TBL(c) (RCLASS_EXT(c)->iv_tbl)
26349#define RCLASS_CONST_TBL(c) (RCLASS_EXT(c)->const_tbl)
26350#define RCLASS_M_TBL(c) (RCLASS_EXT(c)->m_tbl)
26351#define RCLASS_CALLABLE_M_TBL(c) (RCLASS_EXT(c)->callable_m_tbl)
26352#define RCLASS_CC_TBL(c) (RCLASS_EXT(c)->cc_tbl)
26353#define RCLASS_CVC_TBL(c) (RCLASS_EXT(c)->cvc_tbl)
26354#define RCLASS_IV_INDEX_TBL(c) (RCLASS_EXT(c)->iv_index_tbl)
26355#define RCLASS_ORIGIN(c) (RCLASS_EXT(c)->origin_)
26356#define RCLASS_REFINED_CLASS(c) (RCLASS_EXT(c)->refined_class)
26357#define RCLASS_SERIAL(c) (RCLASS(c)->class_serial)
26358#define RCLASS_INCLUDER(c) (RCLASS_EXT(c)->includer)
26359#define RCLASS_SUBCLASS_ENTRY(c) (RCLASS_EXT(c)->subclass_entry)
26360#define RCLASS_MODULE_SUBCLASS_ENTRY(c) (RCLASS_EXT(c)->module_subclass_entry)
26361#define RCLASS_ALLOCATOR(c) (RCLASS_EXT(c)->allocator)
26362#define RCLASS_SUBCLASSES(c) (RCLASS_EXT(c)->subclasses)
26363#define RCLASS_SUPERCLASS_DEPTH(c) (RCLASS_EXT(c)->superclass_depth)
26364#define RCLASS_SUPERCLASSES(c) (RCLASS_EXT(c)->superclasses)
26365#define RICLASS_IS_ORIGIN FL_USER5
26366#define RCLASS_CLONED FL_USER6
26367#define RCLASS_SUPERCLASSES_INCLUDE_SELF FL_USER7
26368#define RICLASS_ORIGIN_SHARED_MTBL FL_USER8
26369#pragma GCC visibility push(default)
26370#pragma GCC visibility pop
26371#pragma GCC diagnostic push
26372#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26373#pragma GCC diagnostic pop
26374#pragma GCC diagnostic push
26375#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26376#pragma GCC diagnostic pop
26377#pragma GCC diagnostic push
26378#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26379#pragma GCC diagnostic pop
26380#pragma GCC visibility push(default)
26381#pragma GCC visibility pop
26382#pragma GCC visibility push(default)
26383#pragma GCC visibility pop
26384#define ROBJECT_IV_INDEX_TBL ROBJECT_IV_INDEX_TBL_inline
26385#define INTERNAL_PARSE_H
26386#pragma GCC visibility push(default)
26387#pragma GCC visibility pop
26388#define INTERNAL_PROC_H
26389#pragma GCC visibility push(default)
26390#pragma GCC visibility pop
26391#define INTERNAL_RE_H
26392#pragma GCC visibility push(default)
26393#pragma GCC visibility pop
26394#define INTERNAL_SYMBOL_H
26395#undef rb_sym_intern_ascii_cstr
26396#define rb_sym_intern_ascii_cstr(ptr) (__builtin_constant_p(ptr) ? rb_sym_intern_ascii((ptr), (long)strlen(ptr)) : rb_sym_intern_ascii_cstr(ptr))
26397#define INTERNAL_THREAD_H
26398#define COVERAGE_INDEX_LINES 0
26399#define COVERAGE_INDEX_BRANCHES 1
26400#define COVERAGE_TARGET_LINES 1
26401#define COVERAGE_TARGET_BRANCHES 2
26402#define COVERAGE_TARGET_METHODS 4
26403#define COVERAGE_TARGET_ONESHOT_LINES 8
26404#pragma GCC visibility push(default)
26405#pragma GCC visibility pop
26406#pragma GCC visibility push(default)
26407#pragma GCC visibility pop
26408#define INTERNAL_SANITIZERS_H
26409#define __MEMCHECK_H
26410#define __VALGRIND_H
26411#define __VALGRIND_MAJOR__ 3
26412#define __VALGRIND_MINOR__ 18
26413#undef PLAT_x86_darwin
26414#undef PLAT_amd64_darwin
26415#undef PLAT_x86_freebsd
26416#undef PLAT_amd64_freebsd
26417#undef PLAT_x86_win32
26418#undef PLAT_amd64_win64
26419#undef PLAT_x86_linux
26420#undef PLAT_amd64_linux
26421#undef PLAT_ppc32_linux
26422#undef PLAT_ppc64be_linux
26423#undef PLAT_ppc64le_linux
26424#undef PLAT_arm_linux
26425#undef PLAT_arm64_linux
26426#undef PLAT_s390x_linux
26427#undef PLAT_mips32_linux
26428#undef PLAT_mips64_linux
26429#undef PLAT_nanomips_linux
26430#undef PLAT_x86_solaris
26431#undef PLAT_amd64_solaris
26432#define PLAT_amd64_linux 1
26433#define VALGRIND_DO_CLIENT_REQUEST(_zzq_rlval,_zzq_default,_zzq_request,_zzq_arg1,_zzq_arg2,_zzq_arg3,_zzq_arg4,_zzq_arg5) do { (_zzq_rlval) = VALGRIND_DO_CLIENT_REQUEST_EXPR((_zzq_default), (_zzq_request), (_zzq_arg1), (_zzq_arg2), (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
26434#define VALGRIND_DO_CLIENT_REQUEST_STMT(_zzq_request,_zzq_arg1,_zzq_arg2,_zzq_arg3,_zzq_arg4,_zzq_arg5) do { (void) VALGRIND_DO_CLIENT_REQUEST_EXPR(0, (_zzq_request), (_zzq_arg1), (_zzq_arg2), (_zzq_arg3), (_zzq_arg4), (_zzq_arg5)); } while (0)
26435#define __SPECIAL_INSTRUCTION_PREAMBLE "rolq $3, %%rdi ; rolq $13, %%rdi\n\t" "rolq $61, %%rdi ; rolq $51, %%rdi\n\t"
26436#define VALGRIND_DO_CLIENT_REQUEST_EXPR(_zzq_default,_zzq_request,_zzq_arg1,_zzq_arg2,_zzq_arg3,_zzq_arg4,_zzq_arg5) __extension__ ({ volatile unsigned long int _zzq_args[6]; volatile unsigned long int _zzq_result; _zzq_args[0] = (unsigned long int)(_zzq_request); _zzq_args[1] = (unsigned long int)(_zzq_arg1); _zzq_args[2] = (unsigned long int)(_zzq_arg2); _zzq_args[3] = (unsigned long int)(_zzq_arg3); _zzq_args[4] = (unsigned long int)(_zzq_arg4); _zzq_args[5] = (unsigned long int)(_zzq_arg5); __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE "xchgq %%rbx,%%rbx" : "=d" (_zzq_result) : "a" (&_zzq_args[0]), "0" (_zzq_default) : "cc", "memory" ); _zzq_result; })
26437#define VALGRIND_GET_NR_CONTEXT(_zzq_rlval) { volatile OrigFn* _zzq_orig = &(_zzq_rlval); volatile unsigned long int __addr; __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE "xchgq %%rcx,%%rcx" : "=a" (__addr) : : "cc", "memory" ); _zzq_orig->nraddr = __addr; }
26438#define VALGRIND_CALL_NOREDIR_RAX __SPECIAL_INSTRUCTION_PREAMBLE "xchgq %%rdx,%%rdx\n\t"
26439#define VALGRIND_VEX_INJECT_IR() do { __asm__ volatile(__SPECIAL_INSTRUCTION_PREAMBLE "xchgq %%rdi,%%rdi\n\t" : : : "cc", "memory" ); } while (0)
26440#define VG_CONCAT4(_aa,_bb,_cc,_dd) _aa ##_bb ##_cc ##_dd
26441#define I_WRAP_SONAME_FNNAME_ZU(soname,fnname) VG_CONCAT4(_vgw00000ZU_,soname,_,fnname)
26442#define I_WRAP_SONAME_FNNAME_ZZ(soname,fnname) VG_CONCAT4(_vgw00000ZZ_,soname,_,fnname)
26443#define VALGRIND_GET_ORIG_FN(_lval) VALGRIND_GET_NR_CONTEXT(_lval)
26444#define I_REPLACE_SONAME_FNNAME_ZU(soname,fnname) VG_CONCAT4(_vgr00000ZU_,soname,_,fnname)
26445#define I_REPLACE_SONAME_FNNAME_ZZ(soname,fnname) VG_CONCAT4(_vgr00000ZZ_,soname,_,fnname)
26446#define CALL_FN_v_v(fnptr) do { volatile unsigned long _junk; CALL_FN_W_v(_junk,fnptr); } while (0)
26447#define CALL_FN_v_W(fnptr,arg1) do { volatile unsigned long _junk; CALL_FN_W_W(_junk,fnptr,arg1); } while (0)
26448#define CALL_FN_v_WW(fnptr,arg1,arg2) do { volatile unsigned long _junk; CALL_FN_W_WW(_junk,fnptr,arg1,arg2); } while (0)
26449#define CALL_FN_v_WWW(fnptr,arg1,arg2,arg3) do { volatile unsigned long _junk; CALL_FN_W_WWW(_junk,fnptr,arg1,arg2,arg3); } while (0)
26450#define CALL_FN_v_WWWW(fnptr,arg1,arg2,arg3,arg4) do { volatile unsigned long _junk; CALL_FN_W_WWWW(_junk,fnptr,arg1,arg2,arg3,arg4); } while (0)
26451#define CALL_FN_v_5W(fnptr,arg1,arg2,arg3,arg4,arg5) do { volatile unsigned long _junk; CALL_FN_W_5W(_junk,fnptr,arg1,arg2,arg3,arg4,arg5); } while (0)
26452#define CALL_FN_v_6W(fnptr,arg1,arg2,arg3,arg4,arg5,arg6) do { volatile unsigned long _junk; CALL_FN_W_6W(_junk,fnptr,arg1,arg2,arg3,arg4,arg5,arg6); } while (0)
26453#define CALL_FN_v_7W(fnptr,arg1,arg2,arg3,arg4,arg5,arg6,arg7) do { volatile unsigned long _junk; CALL_FN_W_7W(_junk,fnptr,arg1,arg2,arg3,arg4,arg5,arg6,arg7); } while (0)
26454#define __CALLER_SAVED_REGS "rcx", "rdx", "rsi", "rdi", "r8", "r9", "r10", "r11"
26455#define __FRAME_POINTER ,"r"(__builtin_dwarf_cfa())
26456#define VALGRIND_CFI_PROLOGUE "movq %%rbp, %%r15\n\t" "movq %2, %%rbp\n\t" ".cfi_remember_state\n\t" ".cfi_def_cfa rbp, 0\n\t"
26457#define VALGRIND_CFI_EPILOGUE "movq %%r15, %%rbp\n\t" ".cfi_restore_state\n\t"
26458#define VALGRIND_ALIGN_STACK "movq %%rsp,%%r14\n\t" "andq $0xfffffffffffffff0,%%rsp\n\t"
26459#define VALGRIND_RESTORE_STACK "movq %%r14,%%rsp\n\t"
26460#define CALL_FN_W_v(lval,orig) do { volatile OrigFn _orig = (orig); volatile unsigned long _argvec[1]; volatile unsigned long _res; _argvec[0] = (unsigned long)_orig.nraddr; __asm__ volatile( VALGRIND_CFI_PROLOGUE VALGRIND_ALIGN_STACK "subq $128,%%rsp\n\t" "movq (%%rax), %%rax\n\t" VALGRIND_CALL_NOREDIR_RAX VALGRIND_RESTORE_STACK VALGRIND_CFI_EPILOGUE : "=a" (_res) : "a" (&_argvec[0]) __FRAME_POINTER : "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" ); lval = (__typeof__(lval)) _res; } while (0)
26461#define CALL_FN_W_W(lval,orig,arg1) do { volatile OrigFn _orig = (orig); volatile unsigned long _argvec[2]; volatile unsigned long _res; _argvec[0] = (unsigned long)_orig.nraddr; _argvec[1] = (unsigned long)(arg1); __asm__ volatile( VALGRIND_CFI_PROLOGUE VALGRIND_ALIGN_STACK "subq $128,%%rsp\n\t" "movq 8(%%rax), %%rdi\n\t" "movq (%%rax), %%rax\n\t" VALGRIND_CALL_NOREDIR_RAX VALGRIND_RESTORE_STACK VALGRIND_CFI_EPILOGUE : "=a" (_res) : "a" (&_argvec[0]) __FRAME_POINTER : "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" ); lval = (__typeof__(lval)) _res; } while (0)
26462#define CALL_FN_W_WW(lval,orig,arg1,arg2) do { volatile OrigFn _orig = (orig); volatile unsigned long _argvec[3]; volatile unsigned long _res; _argvec[0] = (unsigned long)_orig.nraddr; _argvec[1] = (unsigned long)(arg1); _argvec[2] = (unsigned long)(arg2); __asm__ volatile( VALGRIND_CFI_PROLOGUE VALGRIND_ALIGN_STACK "subq $128,%%rsp\n\t" "movq 16(%%rax), %%rsi\n\t" "movq 8(%%rax), %%rdi\n\t" "movq (%%rax), %%rax\n\t" VALGRIND_CALL_NOREDIR_RAX VALGRIND_RESTORE_STACK VALGRIND_CFI_EPILOGUE : "=a" (_res) : "a" (&_argvec[0]) __FRAME_POINTER : "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" ); lval = (__typeof__(lval)) _res; } while (0)
26463#define CALL_FN_W_WWW(lval,orig,arg1,arg2,arg3) do { volatile OrigFn _orig = (orig); volatile unsigned long _argvec[4]; volatile unsigned long _res; _argvec[0] = (unsigned long)_orig.nraddr; _argvec[1] = (unsigned long)(arg1); _argvec[2] = (unsigned long)(arg2); _argvec[3] = (unsigned long)(arg3); __asm__ volatile( VALGRIND_CFI_PROLOGUE VALGRIND_ALIGN_STACK "subq $128,%%rsp\n\t" "movq 24(%%rax), %%rdx\n\t" "movq 16(%%rax), %%rsi\n\t" "movq 8(%%rax), %%rdi\n\t" "movq (%%rax), %%rax\n\t" VALGRIND_CALL_NOREDIR_RAX VALGRIND_RESTORE_STACK VALGRIND_CFI_EPILOGUE : "=a" (_res) : "a" (&_argvec[0]) __FRAME_POINTER : "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" ); lval = (__typeof__(lval)) _res; } while (0)
26464#define CALL_FN_W_WWWW(lval,orig,arg1,arg2,arg3,arg4) do { volatile OrigFn _orig = (orig); volatile unsigned long _argvec[5]; volatile unsigned long _res; _argvec[0] = (unsigned long)_orig.nraddr; _argvec[1] = (unsigned long)(arg1); _argvec[2] = (unsigned long)(arg2); _argvec[3] = (unsigned long)(arg3); _argvec[4] = (unsigned long)(arg4); __asm__ volatile( VALGRIND_CFI_PROLOGUE VALGRIND_ALIGN_STACK "subq $128,%%rsp\n\t" "movq 32(%%rax), %%rcx\n\t" "movq 24(%%rax), %%rdx\n\t" "movq 16(%%rax), %%rsi\n\t" "movq 8(%%rax), %%rdi\n\t" "movq (%%rax), %%rax\n\t" VALGRIND_CALL_NOREDIR_RAX VALGRIND_RESTORE_STACK VALGRIND_CFI_EPILOGUE : "=a" (_res) : "a" (&_argvec[0]) __FRAME_POINTER : "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" ); lval = (__typeof__(lval)) _res; } while (0)
26465#define CALL_FN_W_5W(lval,orig,arg1,arg2,arg3,arg4,arg5) do { volatile OrigFn _orig = (orig); volatile unsigned long _argvec[6]; volatile unsigned long _res; _argvec[0] = (unsigned long)_orig.nraddr; _argvec[1] = (unsigned long)(arg1); _argvec[2] = (unsigned long)(arg2); _argvec[3] = (unsigned long)(arg3); _argvec[4] = (unsigned long)(arg4); _argvec[5] = (unsigned long)(arg5); __asm__ volatile( VALGRIND_CFI_PROLOGUE VALGRIND_ALIGN_STACK "subq $128,%%rsp\n\t" "movq 40(%%rax), %%r8\n\t" "movq 32(%%rax), %%rcx\n\t" "movq 24(%%rax), %%rdx\n\t" "movq 16(%%rax), %%rsi\n\t" "movq 8(%%rax), %%rdi\n\t" "movq (%%rax), %%rax\n\t" VALGRIND_CALL_NOREDIR_RAX VALGRIND_RESTORE_STACK VALGRIND_CFI_EPILOGUE : "=a" (_res) : "a" (&_argvec[0]) __FRAME_POINTER : "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" ); lval = (__typeof__(lval)) _res; } while (0)
26466#define CALL_FN_W_6W(lval,orig,arg1,arg2,arg3,arg4,arg5,arg6) do { volatile OrigFn _orig = (orig); volatile unsigned long _argvec[7]; volatile unsigned long _res; _argvec[0] = (unsigned long)_orig.nraddr; _argvec[1] = (unsigned long)(arg1); _argvec[2] = (unsigned long)(arg2); _argvec[3] = (unsigned long)(arg3); _argvec[4] = (unsigned long)(arg4); _argvec[5] = (unsigned long)(arg5); _argvec[6] = (unsigned long)(arg6); __asm__ volatile( VALGRIND_CFI_PROLOGUE VALGRIND_ALIGN_STACK "subq $128,%%rsp\n\t" "movq 48(%%rax), %%r9\n\t" "movq 40(%%rax), %%r8\n\t" "movq 32(%%rax), %%rcx\n\t" "movq 24(%%rax), %%rdx\n\t" "movq 16(%%rax), %%rsi\n\t" "movq 8(%%rax), %%rdi\n\t" "movq (%%rax), %%rax\n\t" VALGRIND_CALL_NOREDIR_RAX VALGRIND_RESTORE_STACK VALGRIND_CFI_EPILOGUE : "=a" (_res) : "a" (&_argvec[0]) __FRAME_POINTER : "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" ); lval = (__typeof__(lval)) _res; } while (0)
26467#define CALL_FN_W_7W(lval,orig,arg1,arg2,arg3,arg4,arg5,arg6,arg7) do { volatile OrigFn _orig = (orig); volatile unsigned long _argvec[8]; volatile unsigned long _res; _argvec[0] = (unsigned long)_orig.nraddr; _argvec[1] = (unsigned long)(arg1); _argvec[2] = (unsigned long)(arg2); _argvec[3] = (unsigned long)(arg3); _argvec[4] = (unsigned long)(arg4); _argvec[5] = (unsigned long)(arg5); _argvec[6] = (unsigned long)(arg6); _argvec[7] = (unsigned long)(arg7); __asm__ volatile( VALGRIND_CFI_PROLOGUE VALGRIND_ALIGN_STACK "subq $136,%%rsp\n\t" "pushq 56(%%rax)\n\t" "movq 48(%%rax), %%r9\n\t" "movq 40(%%rax), %%r8\n\t" "movq 32(%%rax), %%rcx\n\t" "movq 24(%%rax), %%rdx\n\t" "movq 16(%%rax), %%rsi\n\t" "movq 8(%%rax), %%rdi\n\t" "movq (%%rax), %%rax\n\t" VALGRIND_CALL_NOREDIR_RAX VALGRIND_RESTORE_STACK VALGRIND_CFI_EPILOGUE : "=a" (_res) : "a" (&_argvec[0]) __FRAME_POINTER : "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" ); lval = (__typeof__(lval)) _res; } while (0)
26468#define CALL_FN_W_8W(lval,orig,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8) do { volatile OrigFn _orig = (orig); volatile unsigned long _argvec[9]; volatile unsigned long _res; _argvec[0] = (unsigned long)_orig.nraddr; _argvec[1] = (unsigned long)(arg1); _argvec[2] = (unsigned long)(arg2); _argvec[3] = (unsigned long)(arg3); _argvec[4] = (unsigned long)(arg4); _argvec[5] = (unsigned long)(arg5); _argvec[6] = (unsigned long)(arg6); _argvec[7] = (unsigned long)(arg7); _argvec[8] = (unsigned long)(arg8); __asm__ volatile( VALGRIND_CFI_PROLOGUE VALGRIND_ALIGN_STACK "subq $128,%%rsp\n\t" "pushq 64(%%rax)\n\t" "pushq 56(%%rax)\n\t" "movq 48(%%rax), %%r9\n\t" "movq 40(%%rax), %%r8\n\t" "movq 32(%%rax), %%rcx\n\t" "movq 24(%%rax), %%rdx\n\t" "movq 16(%%rax), %%rsi\n\t" "movq 8(%%rax), %%rdi\n\t" "movq (%%rax), %%rax\n\t" VALGRIND_CALL_NOREDIR_RAX VALGRIND_RESTORE_STACK VALGRIND_CFI_EPILOGUE : "=a" (_res) : "a" (&_argvec[0]) __FRAME_POINTER : "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" ); lval = (__typeof__(lval)) _res; } while (0)
26469#define CALL_FN_W_9W(lval,orig,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9) do { volatile OrigFn _orig = (orig); volatile unsigned long _argvec[10]; volatile unsigned long _res; _argvec[0] = (unsigned long)_orig.nraddr; _argvec[1] = (unsigned long)(arg1); _argvec[2] = (unsigned long)(arg2); _argvec[3] = (unsigned long)(arg3); _argvec[4] = (unsigned long)(arg4); _argvec[5] = (unsigned long)(arg5); _argvec[6] = (unsigned long)(arg6); _argvec[7] = (unsigned long)(arg7); _argvec[8] = (unsigned long)(arg8); _argvec[9] = (unsigned long)(arg9); __asm__ volatile( VALGRIND_CFI_PROLOGUE VALGRIND_ALIGN_STACK "subq $136,%%rsp\n\t" "pushq 72(%%rax)\n\t" "pushq 64(%%rax)\n\t" "pushq 56(%%rax)\n\t" "movq 48(%%rax), %%r9\n\t" "movq 40(%%rax), %%r8\n\t" "movq 32(%%rax), %%rcx\n\t" "movq 24(%%rax), %%rdx\n\t" "movq 16(%%rax), %%rsi\n\t" "movq 8(%%rax), %%rdi\n\t" "movq (%%rax), %%rax\n\t" VALGRIND_CALL_NOREDIR_RAX VALGRIND_RESTORE_STACK VALGRIND_CFI_EPILOGUE : "=a" (_res) : "a" (&_argvec[0]) __FRAME_POINTER : "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" ); lval = (__typeof__(lval)) _res; } while (0)
26470#define CALL_FN_W_10W(lval,orig,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) do { volatile OrigFn _orig = (orig); volatile unsigned long _argvec[11]; volatile unsigned long _res; _argvec[0] = (unsigned long)_orig.nraddr; _argvec[1] = (unsigned long)(arg1); _argvec[2] = (unsigned long)(arg2); _argvec[3] = (unsigned long)(arg3); _argvec[4] = (unsigned long)(arg4); _argvec[5] = (unsigned long)(arg5); _argvec[6] = (unsigned long)(arg6); _argvec[7] = (unsigned long)(arg7); _argvec[8] = (unsigned long)(arg8); _argvec[9] = (unsigned long)(arg9); _argvec[10] = (unsigned long)(arg10); __asm__ volatile( VALGRIND_CFI_PROLOGUE VALGRIND_ALIGN_STACK "subq $128,%%rsp\n\t" "pushq 80(%%rax)\n\t" "pushq 72(%%rax)\n\t" "pushq 64(%%rax)\n\t" "pushq 56(%%rax)\n\t" "movq 48(%%rax), %%r9\n\t" "movq 40(%%rax), %%r8\n\t" "movq 32(%%rax), %%rcx\n\t" "movq 24(%%rax), %%rdx\n\t" "movq 16(%%rax), %%rsi\n\t" "movq 8(%%rax), %%rdi\n\t" "movq (%%rax), %%rax\n\t" VALGRIND_CALL_NOREDIR_RAX VALGRIND_RESTORE_STACK VALGRIND_CFI_EPILOGUE : "=a" (_res) : "a" (&_argvec[0]) __FRAME_POINTER : "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" ); lval = (__typeof__(lval)) _res; } while (0)
26471#define CALL_FN_W_11W(lval,orig,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11) do { volatile OrigFn _orig = (orig); volatile unsigned long _argvec[12]; volatile unsigned long _res; _argvec[0] = (unsigned long)_orig.nraddr; _argvec[1] = (unsigned long)(arg1); _argvec[2] = (unsigned long)(arg2); _argvec[3] = (unsigned long)(arg3); _argvec[4] = (unsigned long)(arg4); _argvec[5] = (unsigned long)(arg5); _argvec[6] = (unsigned long)(arg6); _argvec[7] = (unsigned long)(arg7); _argvec[8] = (unsigned long)(arg8); _argvec[9] = (unsigned long)(arg9); _argvec[10] = (unsigned long)(arg10); _argvec[11] = (unsigned long)(arg11); __asm__ volatile( VALGRIND_CFI_PROLOGUE VALGRIND_ALIGN_STACK "subq $136,%%rsp\n\t" "pushq 88(%%rax)\n\t" "pushq 80(%%rax)\n\t" "pushq 72(%%rax)\n\t" "pushq 64(%%rax)\n\t" "pushq 56(%%rax)\n\t" "movq 48(%%rax), %%r9\n\t" "movq 40(%%rax), %%r8\n\t" "movq 32(%%rax), %%rcx\n\t" "movq 24(%%rax), %%rdx\n\t" "movq 16(%%rax), %%rsi\n\t" "movq 8(%%rax), %%rdi\n\t" "movq (%%rax), %%rax\n\t" VALGRIND_CALL_NOREDIR_RAX VALGRIND_RESTORE_STACK VALGRIND_CFI_EPILOGUE : "=a" (_res) : "a" (&_argvec[0]) __FRAME_POINTER : "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" ); lval = (__typeof__(lval)) _res; } while (0)
26472#define CALL_FN_W_12W(lval,orig,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10,arg11,arg12) do { volatile OrigFn _orig = (orig); volatile unsigned long _argvec[13]; volatile unsigned long _res; _argvec[0] = (unsigned long)_orig.nraddr; _argvec[1] = (unsigned long)(arg1); _argvec[2] = (unsigned long)(arg2); _argvec[3] = (unsigned long)(arg3); _argvec[4] = (unsigned long)(arg4); _argvec[5] = (unsigned long)(arg5); _argvec[6] = (unsigned long)(arg6); _argvec[7] = (unsigned long)(arg7); _argvec[8] = (unsigned long)(arg8); _argvec[9] = (unsigned long)(arg9); _argvec[10] = (unsigned long)(arg10); _argvec[11] = (unsigned long)(arg11); _argvec[12] = (unsigned long)(arg12); __asm__ volatile( VALGRIND_CFI_PROLOGUE VALGRIND_ALIGN_STACK "subq $128,%%rsp\n\t" "pushq 96(%%rax)\n\t" "pushq 88(%%rax)\n\t" "pushq 80(%%rax)\n\t" "pushq 72(%%rax)\n\t" "pushq 64(%%rax)\n\t" "pushq 56(%%rax)\n\t" "movq 48(%%rax), %%r9\n\t" "movq 40(%%rax), %%r8\n\t" "movq 32(%%rax), %%rcx\n\t" "movq 24(%%rax), %%rdx\n\t" "movq 16(%%rax), %%rsi\n\t" "movq 8(%%rax), %%rdi\n\t" "movq (%%rax), %%rax\n\t" VALGRIND_CALL_NOREDIR_RAX VALGRIND_RESTORE_STACK VALGRIND_CFI_EPILOGUE : "=a" (_res) : "a" (&_argvec[0]) __FRAME_POINTER : "cc", "memory", __CALLER_SAVED_REGS, "r14", "r15" ); lval = (__typeof__(lval)) _res; } while (0)
26473#define VG_USERREQ_TOOL_BASE(a,b) ((unsigned int)(((a)&0xff) << 24 | ((b)&0xff) << 16))
26474#define VG_IS_TOOL_USERREQ(a,b,v) (VG_USERREQ_TOOL_BASE(a,b) == ((v) & 0xffff0000))
26475#define RUNNING_ON_VALGRIND (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0 , VG_USERREQ__RUNNING_ON_VALGRIND, 0, 0, 0, 0, 0)
26476#define VALGRIND_DISCARD_TRANSLATIONS(_qzz_addr,_qzz_len) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__DISCARD_TRANSLATIONS, _qzz_addr, _qzz_len, 0, 0, 0)
26477#define VALGRIND_INNER_THREADS(_qzz_addr) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__INNER_THREADS, _qzz_addr, 0, 0, 0, 0)
26478#define VALGRIND_NON_SIMD_CALL0(_qyy_fn) VALGRIND_DO_CLIENT_REQUEST_EXPR(0 , VG_USERREQ__CLIENT_CALL0, _qyy_fn, 0, 0, 0, 0)
26479#define VALGRIND_NON_SIMD_CALL1(_qyy_fn,_qyy_arg1) VALGRIND_DO_CLIENT_REQUEST_EXPR(0 , VG_USERREQ__CLIENT_CALL1, _qyy_fn, _qyy_arg1, 0, 0, 0)
26480#define VALGRIND_NON_SIMD_CALL2(_qyy_fn,_qyy_arg1,_qyy_arg2) VALGRIND_DO_CLIENT_REQUEST_EXPR(0 , VG_USERREQ__CLIENT_CALL2, _qyy_fn, _qyy_arg1, _qyy_arg2, 0, 0)
26481#define VALGRIND_NON_SIMD_CALL3(_qyy_fn,_qyy_arg1,_qyy_arg2,_qyy_arg3) VALGRIND_DO_CLIENT_REQUEST_EXPR(0 , VG_USERREQ__CLIENT_CALL3, _qyy_fn, _qyy_arg1, _qyy_arg2, _qyy_arg3, 0)
26482#define VALGRIND_COUNT_ERRORS (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR( 0 , VG_USERREQ__COUNT_ERRORS, 0, 0, 0, 0, 0)
26483#define VALGRIND_MALLOCLIKE_BLOCK(addr,sizeB,rzB,is_zeroed) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MALLOCLIKE_BLOCK, addr, sizeB, rzB, is_zeroed, 0)
26484#define VALGRIND_RESIZEINPLACE_BLOCK(addr,oldSizeB,newSizeB,rzB) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__RESIZEINPLACE_BLOCK, addr, oldSizeB, newSizeB, rzB, 0)
26485#define VALGRIND_FREELIKE_BLOCK(addr,rzB) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__FREELIKE_BLOCK, addr, rzB, 0, 0, 0)
26486#define VALGRIND_CREATE_MEMPOOL(pool,rzB,is_zeroed) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__CREATE_MEMPOOL, pool, rzB, is_zeroed, 0, 0)
26487#define VALGRIND_MEMPOOL_AUTO_FREE 1
26488#define VALGRIND_MEMPOOL_METAPOOL 2
26489#define VALGRIND_CREATE_MEMPOOL_EXT(pool,rzB,is_zeroed,flags) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__CREATE_MEMPOOL, pool, rzB, is_zeroed, flags, 0)
26490#define VALGRIND_DESTROY_MEMPOOL(pool) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__DESTROY_MEMPOOL, pool, 0, 0, 0, 0)
26491#define VALGRIND_MEMPOOL_ALLOC(pool,addr,size) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MEMPOOL_ALLOC, pool, addr, size, 0, 0)
26492#define VALGRIND_MEMPOOL_FREE(pool,addr) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MEMPOOL_FREE, pool, addr, 0, 0, 0)
26493#define VALGRIND_MEMPOOL_TRIM(pool,addr,size) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MEMPOOL_TRIM, pool, addr, size, 0, 0)
26494#define VALGRIND_MOVE_MEMPOOL(poolA,poolB) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MOVE_MEMPOOL, poolA, poolB, 0, 0, 0)
26495#define VALGRIND_MEMPOOL_CHANGE(pool,addrA,addrB,size) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__MEMPOOL_CHANGE, pool, addrA, addrB, size, 0)
26496#define VALGRIND_MEMPOOL_EXISTS(pool) (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__MEMPOOL_EXISTS, pool, 0, 0, 0, 0)
26497#define VALGRIND_STACK_REGISTER(start,end) (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__STACK_REGISTER, start, end, 0, 0, 0)
26498#define VALGRIND_STACK_DEREGISTER(id) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__STACK_DEREGISTER, id, 0, 0, 0, 0)
26499#define VALGRIND_STACK_CHANGE(id,start,end) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__STACK_CHANGE, id, start, end, 0, 0)
26500#define VALGRIND_LOAD_PDB_DEBUGINFO(fd,ptr,total_size,delta) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__LOAD_PDB_DEBUGINFO, fd, ptr, total_size, delta, 0)
26501#define VALGRIND_MAP_IP_TO_SRCLOC(addr,buf64) (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__MAP_IP_TO_SRCLOC, addr, buf64, 0, 0, 0)
26502#define VALGRIND_DISABLE_ERROR_REPORTING VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__CHANGE_ERR_DISABLEMENT, 1, 0, 0, 0, 0)
26503#define VALGRIND_ENABLE_ERROR_REPORTING VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__CHANGE_ERR_DISABLEMENT, -1, 0, 0, 0, 0)
26504#define VALGRIND_MONITOR_COMMAND(command) VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__GDB_MONITOR_COMMAND, command, 0, 0, 0, 0)
26505#define VALGRIND_CLO_CHANGE(option) VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__CLO_CHANGE, option, 0, 0, 0, 0)
26506#undef PLAT_x86_darwin
26507#undef PLAT_amd64_darwin
26508#undef PLAT_x86_win32
26509#undef PLAT_amd64_win64
26510#undef PLAT_x86_linux
26511#undef PLAT_amd64_linux
26512#undef PLAT_ppc32_linux
26513#undef PLAT_ppc64be_linux
26514#undef PLAT_ppc64le_linux
26515#undef PLAT_arm_linux
26516#undef PLAT_s390x_linux
26517#undef PLAT_mips32_linux
26518#undef PLAT_mips64_linux
26519#undef PLAT_nanomips_linux
26520#undef PLAT_x86_solaris
26521#undef PLAT_amd64_solaris
26522#define VALGRIND_MAKE_MEM_NOACCESS(_qzz_addr,_qzz_len) VALGRIND_DO_CLIENT_REQUEST_EXPR(0 , VG_USERREQ__MAKE_MEM_NOACCESS, (_qzz_addr), (_qzz_len), 0, 0, 0)
26523#define VALGRIND_MAKE_MEM_UNDEFINED(_qzz_addr,_qzz_len) VALGRIND_DO_CLIENT_REQUEST_EXPR(0 , VG_USERREQ__MAKE_MEM_UNDEFINED, (_qzz_addr), (_qzz_len), 0, 0, 0)
26524#define VALGRIND_MAKE_MEM_DEFINED(_qzz_addr,_qzz_len) VALGRIND_DO_CLIENT_REQUEST_EXPR(0 , VG_USERREQ__MAKE_MEM_DEFINED, (_qzz_addr), (_qzz_len), 0, 0, 0)
26525#define VALGRIND_MAKE_MEM_DEFINED_IF_ADDRESSABLE(_qzz_addr,_qzz_len) VALGRIND_DO_CLIENT_REQUEST_EXPR(0 , VG_USERREQ__MAKE_MEM_DEFINED_IF_ADDRESSABLE, (_qzz_addr), (_qzz_len), 0, 0, 0)
26526#define VALGRIND_CREATE_BLOCK(_qzz_addr,_qzz_len,_qzz_desc) VALGRIND_DO_CLIENT_REQUEST_EXPR(0 , VG_USERREQ__CREATE_BLOCK, (_qzz_addr), (_qzz_len), (_qzz_desc), 0, 0)
26527#define VALGRIND_DISCARD(_qzz_blkindex) VALGRIND_DO_CLIENT_REQUEST_EXPR(0 , VG_USERREQ__DISCARD, 0, (_qzz_blkindex), 0, 0, 0)
26528#define VALGRIND_CHECK_MEM_IS_ADDRESSABLE(_qzz_addr,_qzz_len) VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__CHECK_MEM_IS_ADDRESSABLE, (_qzz_addr), (_qzz_len), 0, 0, 0)
26529#define VALGRIND_CHECK_MEM_IS_DEFINED(_qzz_addr,_qzz_len) VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__CHECK_MEM_IS_DEFINED, (_qzz_addr), (_qzz_len), 0, 0, 0)
26530#define VALGRIND_CHECK_VALUE_IS_DEFINED(__lvalue) VALGRIND_CHECK_MEM_IS_DEFINED( (volatile unsigned char *)&(__lvalue), (unsigned long)(sizeof (__lvalue)))
26531#define VALGRIND_DO_LEAK_CHECK VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__DO_LEAK_CHECK, 0, 0, 0, 0, 0)
26532#define VALGRIND_DO_ADDED_LEAK_CHECK VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__DO_LEAK_CHECK, 0, 1, 0, 0, 0)
26533#define VALGRIND_DO_CHANGED_LEAK_CHECK VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__DO_LEAK_CHECK, 0, 2, 0, 0, 0)
26534#define VALGRIND_DO_QUICK_LEAK_CHECK VALGRIND_DO_CLIENT_REQUEST_STMT(VG_USERREQ__DO_LEAK_CHECK, 1, 0, 0, 0, 0)
26535#define VALGRIND_COUNT_LEAKS(leaked,dubious,reachable,suppressed) { unsigned long _qzz_leaked = 0, _qzz_dubious = 0; unsigned long _qzz_reachable = 0, _qzz_suppressed = 0; VALGRIND_DO_CLIENT_REQUEST_STMT( VG_USERREQ__COUNT_LEAKS, &_qzz_leaked, &_qzz_dubious, &_qzz_reachable, &_qzz_suppressed, 0); leaked = _qzz_leaked; dubious = _qzz_dubious; reachable = _qzz_reachable; suppressed = _qzz_suppressed; }
26536#define VALGRIND_COUNT_LEAK_BLOCKS(leaked,dubious,reachable,suppressed) { unsigned long _qzz_leaked = 0, _qzz_dubious = 0; unsigned long _qzz_reachable = 0, _qzz_suppressed = 0; VALGRIND_DO_CLIENT_REQUEST_STMT( VG_USERREQ__COUNT_LEAK_BLOCKS, &_qzz_leaked, &_qzz_dubious, &_qzz_reachable, &_qzz_suppressed, 0); leaked = _qzz_leaked; dubious = _qzz_dubious; reachable = _qzz_reachable; suppressed = _qzz_suppressed; }
26537#define VALGRIND_GET_VBITS(zza,zzvbits,zznbytes) (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__GET_VBITS, (const char*)(zza), (char*)(zzvbits), (zznbytes), 0, 0)
26538#define VALGRIND_SET_VBITS(zza,zzvbits,zznbytes) (unsigned)VALGRIND_DO_CLIENT_REQUEST_EXPR(0, VG_USERREQ__SET_VBITS, (const char*)(zza), (const char*)(zzvbits), (zznbytes), 0, 0 )
26539#define VALGRIND_DISABLE_ADDR_ERROR_REPORTING_IN_RANGE(_qzz_addr,_qzz_len) VALGRIND_DO_CLIENT_REQUEST_EXPR(0 , VG_USERREQ__DISABLE_ADDR_ERROR_REPORTING_IN_RANGE, (_qzz_addr), (_qzz_len), 0, 0, 0)
26540#define VALGRIND_ENABLE_ADDR_ERROR_REPORTING_IN_RANGE(_qzz_addr,_qzz_len) VALGRIND_DO_CLIENT_REQUEST_EXPR(0 , VG_USERREQ__ENABLE_ADDR_ERROR_REPORTING_IN_RANGE, (_qzz_addr), (_qzz_len), 0, 0, 0)
26541#define SANITIZER_ASAN_INTERFACE_H
26542#define SANITIZER_COMMON_INTERFACE_DEFS_H
26543#define ASAN_POISON_MEMORY_REGION(addr,size) ((void)(addr), (void)(size))
26544#define ASAN_UNPOISON_MEMORY_REGION(addr,size) ((void)(addr), (void)(size))
26545#define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) NO_SANITIZE_ADDRESS(NOINLINE(x))
26547#define NO_SANITIZE(x,y) COMPILER_WARNING_PUSH; COMPILER_WARNING_IGNORED(-Wattributes); __attribute__((__no_sanitize__(x))) y; COMPILER_WARNING_POP
26548#define __asan_poison_memory_region(x,y)
26549#define __asan_unpoison_memory_region(x,y)
26550#define __asan_region_is_poisoned(x,y) 0
26551#define __msan_allocated_memory(x,y) ((void)(x), (void)(y))
26552#define __msan_poison(x,y) ((void)(x), (void)(y))
26553#define __msan_unpoison(x,y) ((void)(x), (void)(y))
26554#define __msan_unpoison_string(x) ((void)(x))
26555#define RUBY_ISEQ_H 1
26556#define ISEQ_MAJOR_VERSION ((unsigned int)ruby_api_version[0])
26557#define ISEQ_MINOR_VERSION ((unsigned int)ruby_api_version[1])
26558#define USE_ISEQ_NODE_ID 1
26559#define ISEQ_COVERAGE(iseq) iseq->body->variable.coverage
26560#define ISEQ_COVERAGE_SET(iseq,cov) RB_OBJ_WRITE(iseq, &iseq->body->variable.coverage, cov)
26561#define ISEQ_LINE_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_LINES)
26562#define ISEQ_BRANCH_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_BRANCHES)
26563#define ISEQ_PC2BRANCHINDEX(iseq) iseq->body->variable.pc2branchindex
26564#define ISEQ_PC2BRANCHINDEX_SET(iseq,h) RB_OBJ_WRITE(iseq, &iseq->body->variable.pc2branchindex, h)
26565#define ISEQ_FLIP_CNT(iseq) (iseq)->body->variable.flip_count
26566#define ISEQ_TRACE_EVENTS (RUBY_EVENT_LINE | RUBY_EVENT_CLASS | RUBY_EVENT_END | RUBY_EVENT_CALL | RUBY_EVENT_RETURN| RUBY_EVENT_C_CALL| RUBY_EVENT_C_RETURN| RUBY_EVENT_B_CALL| RUBY_EVENT_B_RETURN| RUBY_EVENT_COVERAGE_LINE| RUBY_EVENT_COVERAGE_BRANCH)
26567#define ISEQ_NOT_LOADED_YET IMEMO_FL_USER1
26568#define ISEQ_USE_COMPILE_DATA IMEMO_FL_USER2
26569#define ISEQ_TRANSLATED IMEMO_FL_USER3
26570#define ISEQ_MARKABLE_ISEQ IMEMO_FL_USER4
26571#define ISEQ_EXECUTABLE_P(iseq) (FL_TEST_RAW(((VALUE)iseq), ISEQ_NOT_LOADED_YET | ISEQ_USE_COMPILE_DATA) == 0)
26572#pragma GCC visibility push(default)
26573#define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512)
26574#pragma GCC visibility pop
26575#define RUBY_MJIT_H 1
26576#define USE_DEBUG_COUNTER 0
26577#define RUBY_DEBUG_COUNTER_H 1
26578#define RB_DEBUG_COUNTER(name) RB_DEBUG_COUNTER_ ##name,
26579#undef RB_DEBUG_COUNTER
26580#define RB_DEBUG_COUNTER_INC(type) ((void)0)
26581#define RB_DEBUG_COUNTER_INC_UNLESS(type,cond) (!!(cond))
26582#define RB_DEBUG_COUNTER_INC_IF(type,cond) (!!(cond))
26583#define RB_DEBUG_COUNTER_ADD(type,num) ((void)0)
26584#define RB_DEBUG_COUNTER_SETMAX(type,num) 0
26585#pragma GCC visibility push(default)
26586#pragma GCC visibility pop
26588#define HAVE_RUBY_ATOMIC_H 1
26589#define HAVE_RUBY_DEBUG_H 1
26590#define HAVE_RUBY_DEFINES_H 1
26591#define HAVE_RUBY_ENCODING_H 1
26592#define HAVE_RUBY_FIBER_SCHEDULER_H 1
26593#define HAVE_RUBY_INTERN_H 1
26594#define HAVE_RUBY_IO_H 1
26595#define HAVE_RUBY_MEMORY_VIEW_H 1
26596#define HAVE_RUBY_MISSING_H 1
26597#define HAVE_RUBY_ONIGMO_H 1
26598#define HAVE_RUBY_ONIGURUMA_H 1
26599#define HAVE_RUBY_RACTOR_H 1
26600#define HAVE_RUBY_RANDOM_H 1
26601#define HAVE_RUBY_RE_H 1
26602#define HAVE_RUBY_REGEX_H 1
26603#define HAVE_RUBY_RUBY_H 1
26604#define HAVE_RUBY_ST_H 1
26605#define HAVE_RUBY_THREAD_H 1
26606#define HAVE_RUBY_THREAD_NATIVE_H 1
26607#define HAVE_RUBY_UTIL_H 1
26608#define HAVE_RUBY_VERSION_H 1
26609#define HAVE_RUBY_VM_H 1
26611#define YJIT_STATS RUBY_DEBUG
26612#define YJIT_SUPPORTED_P 1
26613#pragma GCC visibility push(default)
26614#pragma GCC visibility pop
26615#define mjit_enabled true
26617#pragma GCC visibility push(default)
26618#pragma GCC visibility pop
26619#define RUBY_VM_CALLINFO_H
26620#define VM_CALL_ARGS_SPLAT (0x01 << VM_CALL_ARGS_SPLAT_bit)
26621#define VM_CALL_ARGS_BLOCKARG (0x01 << VM_CALL_ARGS_BLOCKARG_bit)
26622#define VM_CALL_FCALL (0x01 << VM_CALL_FCALL_bit)
26623#define VM_CALL_VCALL (0x01 << VM_CALL_VCALL_bit)
26624#define VM_CALL_ARGS_SIMPLE (0x01 << VM_CALL_ARGS_SIMPLE_bit)
26625#define VM_CALL_BLOCKISEQ (0x01 << VM_CALL_BLOCKISEQ_bit)
26626#define VM_CALL_KWARG (0x01 << VM_CALL_KWARG_bit)
26627#define VM_CALL_KW_SPLAT (0x01 << VM_CALL_KW_SPLAT_bit)
26628#define VM_CALL_TAILCALL (0x01 << VM_CALL_TAILCALL_bit)
26629#define VM_CALL_SUPER (0x01 << VM_CALL_SUPER_bit)
26630#define VM_CALL_ZSUPER (0x01 << VM_CALL_ZSUPER_bit)
26631#define VM_CALL_OPT_SEND (0x01 << VM_CALL_OPT_SEND_bit)
26632#define VM_CALL_KW_SPLAT_MUT (0x01 << VM_CALL_KW_SPLAT_MUT_bit)
26633#define USE_EMBED_CI 1
26634#define CI_EMBED_TAG_bits 1
26635#define CI_EMBED_ARGC_bits 15
26636#define CI_EMBED_FLAG_bits 16
26637#define CI_EMBED_ID_bits 32
26638#define CI_EMBED_FLAG 0x01
26639#define CI_EMBED_ARGC_SHFT (CI_EMBED_TAG_bits)
26640#define CI_EMBED_ARGC_MASK ((((VALUE)1)<<CI_EMBED_ARGC_bits) - 1)
26641#define CI_EMBED_FLAG_SHFT (CI_EMBED_TAG_bits + CI_EMBED_ARGC_bits)
26642#define CI_EMBED_FLAG_MASK ((((VALUE)1)<<CI_EMBED_FLAG_bits) - 1)
26643#define CI_EMBED_ID_SHFT (CI_EMBED_TAG_bits + CI_EMBED_ARGC_bits + CI_EMBED_FLAG_bits)
26644#define CI_EMBED_ID_MASK ((((VALUE)1)<<CI_EMBED_ID_bits) - 1)
26645#define vm_ci_new(mid,flag,argc,kwarg) vm_ci_new_(mid, flag, argc, kwarg, __FILE__, __LINE__)
26646#define vm_ci_new_runtime(mid,flag,argc,kwarg) vm_ci_new_runtime_(mid, flag, argc, kwarg, __FILE__, __LINE__)
26647#define VM_CI_EMBEDDABLE_P(mid,flag,argc,kwarg) (((mid ) & ~CI_EMBED_ID_MASK) ? false : ((flag) & ~CI_EMBED_FLAG_MASK) ? false : ((argc) & ~CI_EMBED_ARGC_MASK) ? false : (kwarg) ? false : true)
26648#define vm_ci_new_id(mid,flag,argc,must_zero) ((const struct rb_callinfo *) ((((VALUE)(mid )) << CI_EMBED_ID_SHFT) | (((VALUE)(flag)) << CI_EMBED_FLAG_SHFT) | (((VALUE)(argc)) << CI_EMBED_ARGC_SHFT) | RUBY_FIXNUM_FLAG))
26649#define VM_CALLINFO_NOT_UNDER_GC IMEMO_FL_USER0
26650#define VM_CI_ON_STACK(mid_,flags_,argc_,kwarg_) (struct rb_callinfo) { .flags = T_IMEMO | (imemo_callinfo << FL_USHIFT) | VM_CALLINFO_NOT_UNDER_GC, .mid = mid_, .flag = flags_, .argc = argc_, .kwarg = kwarg_, }
26651#define VM_CALLCACHE_UNMARKABLE IMEMO_FL_USER0
26652#define VM_CALLCACHE_ON_STACK IMEMO_FL_USER1
26653#define VM_CC_ON_STACK(clazz,call,aux,cme) (struct rb_callcache) { .flags = T_IMEMO | (imemo_callcache << FL_USHIFT) | VM_CALLCACHE_UNMARKABLE | VM_CALLCACHE_ON_STACK, .klass = clazz, .cme_ = cme, .call_ = call, .aux_ = aux, }
26654#define vm_cc_empty() rb_vm_empty_cc()
26655#define RUBY_DEBUG_H
26656#pragma GCC visibility push(default)
26657#define dpv(h,v) ruby_debug_print_value(-1, 0, (h), (v))
26658#define dp(v) ruby_debug_print_value(-1, 0, "", (v))
26659#define dpi(i) ruby_debug_print_id(-1, 0, "", (i))
26660#define dpn(n) ruby_debug_print_node(-1, 0, "", (n))
26661#pragma GCC visibility pop
26662#define RUBY_DEVEL 0
26663#define _RUBY_DEBUG_LOG(...) ruby_debug_log(__FILE__, __LINE__, RUBY_FUNCTION_NAME_STRING, "" __VA_ARGS__)
26664#define RUBY_DEBUG_LOG(...)
26665#define RUBY_DEBUG_LOG2(file,line,...)
26666#define RUBY_VM_EXEC_H
26668#define DEBUG_ENTER_INSN(insn)
26669#define DEBUG_END_INSN()
26670#define throwdebug if(0)ruby_debug_printf
26671#define USE_INSNS_COUNTER 0
26672#define LABEL(x) INSN_LABEL_ ##x
26673#define ELABEL(x) INSN_ELABEL_ ##x
26674#define LABEL_PTR(x) RB_GNUC_EXTENSION(&&LABEL(x))
26675#define INSN_ENTRY_SIG(insn) if (0) { ruby_debug_printf("exec: %s@(%"PRIdPTRDIFF", %"PRIdPTRDIFF")@%s:%u\n", #insn, (reg_pc - reg_cfp->iseq->body->iseq_encoded), (reg_cfp->pc - reg_cfp->iseq->body->iseq_encoded), RSTRING_PTR(rb_iseq_path(reg_cfp->iseq)), rb_iseq_line_no(reg_cfp->iseq, reg_pc - reg_cfp->iseq->body->iseq_encoded)); } if (USE_INSNS_COUNTER) vm_insns_counter_count_insn(BIN(insn));
26676#define INSN_DISPATCH_SIG(insn)
26677#define INSN_ENTRY(insn) LABEL(insn): INSN_ENTRY_SIG(insn);
26678#define TC_DISPATCH(insn) INSN_DISPATCH_SIG(insn); RB_GNUC_EXTENSION_BLOCK(goto *(void const *)GET_CURRENT_INSN()); ;
26679#define END_INSN(insn) DEBUG_END_INSN(); TC_DISPATCH(insn);
26680#define INSN_DISPATCH() TC_DISPATCH(__START__) {
26681#define END_INSNS_DISPATCH() rb_bug("unknown insn: %"PRIdVALUE, GET_CURRENT_INSN()); }
26682#define NEXT_INSN() TC_DISPATCH(__NEXT_INSN__)
26683#define START_OF_ORIGINAL_INSN(x) if (0) goto start_of_ ##x; start_of_ ##x:
26684#define DISPATCH_ORIGINAL_INSN(x) goto start_of_ ##x;
26685#define VM_SP_CNT(ec,sp) ((sp) - (ec)->vm_stack)
26686#define THROW_EXCEPTION(exc) do { ec->errinfo = (VALUE)(exc); EC_JUMP_TAG(ec, ec->tag->state); } while (0)
26687#define SCREG(r) (reg_ ##r)
26688#define VM_DEBUG_STACKOVERFLOW 0
26689#define CHECK_VM_STACK_OVERFLOW_FOR_INSN(cfp,margin)
26690#define INSN_LABEL2(insn,name) INSN_LABEL_ ## insn ## _ ## name
26691#define INSN_LABEL(x) INSN_LABEL2(NAME_OF_CURRENT_INSN, x)
26692#define RUBY_INSNHELPER_H
26693#pragma GCC visibility push(default)
26694#pragma GCC visibility pop
26695#define COLLECT_USAGE_INSN(insn)
26696#define COLLECT_USAGE_OPERAND(insn,n,op)
26697#define COLLECT_USAGE_REGISTER(reg,s)
26698#define PUSH(x) (SET_SV(x), INC_SP(1))
26699#define TOPN(n) (*(GET_SP()-(n)-1))
26700#define POPN(n) (DEC_SP(n))
26701#define POP() (DEC_SP(1))
26702#define STACK_ADDR_FROM_TOP(n) (GET_SP()-(n))
26703#define VM_REG_CFP (reg_cfp)
26704#define VM_REG_PC (VM_REG_CFP->pc)
26705#define VM_REG_SP (VM_REG_CFP->sp)
26706#define VM_REG_EP (VM_REG_CFP->ep)
26707#define RESTORE_REGS() do { VM_REG_CFP = ec->cfp; } while (0)
26708#define COLLECT_USAGE_REGISTER_HELPER(a,b,v) (v)
26709#define GET_PC() (COLLECT_USAGE_REGISTER_HELPER(PC, GET, VM_REG_PC))
26710#define SET_PC(x) (VM_REG_PC = (COLLECT_USAGE_REGISTER_HELPER(PC, SET, (x))))
26711#define GET_CURRENT_INSN() (*GET_PC())
26712#define GET_OPERAND(n) (GET_PC()[(n)])
26713#define ADD_PC(n) (SET_PC(VM_REG_PC + (n)))
26714#define JUMP(dst) (SET_PC(VM_REG_PC + (dst)))
26715#define GET_CFP() (COLLECT_USAGE_REGISTER_HELPER(CFP, GET, VM_REG_CFP))
26716#define GET_EP() (COLLECT_USAGE_REGISTER_HELPER(EP, GET, VM_REG_EP))
26717#define SET_EP(x) (VM_REG_EP = (COLLECT_USAGE_REGISTER_HELPER(EP, SET, (x))))
26718#define GET_LEP() (VM_EP_LEP(GET_EP()))
26719#define GET_SP() (COLLECT_USAGE_REGISTER_HELPER(SP, GET, VM_REG_SP))
26720#define SET_SP(x) (VM_REG_SP = (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
26721#define INC_SP(x) (VM_REG_SP += (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
26722#define DEC_SP(x) (VM_REG_SP -= (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
26723#define SET_SV(x) (*GET_SP() = rb_ractor_confirm_belonging(x))
26724#define GET_ISEQ() (GET_CFP()->iseq)
26725#define GET_PREV_EP(ep) ((VALUE *)((ep)[VM_ENV_DATA_INDEX_SPECVAL] & ~0x03))
26726#define GET_SELF() (COLLECT_USAGE_REGISTER_HELPER(SELF, GET, GET_CFP()->self))
26727#define GET_BLOCK_HANDLER() (GET_LEP()[VM_ENV_DATA_INDEX_SPECVAL])
26728#define SETUP_CANARY(cond) if (cond) {} else {}
26729#define CHECK_CANARY(cond,insn) if (cond) {(void)(insn);}
26730#define PREV_CLASS_SERIAL() (ruby_vm_class_serial)
26731#define NEXT_CLASS_SERIAL() (++ruby_vm_class_serial)
26732#define GET_GLOBAL_CONSTANT_STATE() (ruby_vm_global_constant_state)
26733#define INC_GLOBAL_CONSTANT_STATE() (++ruby_vm_global_constant_state)
26734#define GET_GLOBAL_CVAR_STATE() (ruby_vm_global_cvar_state)
26735#define INC_GLOBAL_CVAR_STATE() (++ruby_vm_global_cvar_state)
26736#define IS_ARGS_SPLAT(ci) (vm_ci_flag(ci) & VM_CALL_ARGS_SPLAT)
26737#define IS_ARGS_KEYWORD(ci) (vm_ci_flag(ci) & VM_CALL_KWARG)
26738#define IS_ARGS_KW_SPLAT(ci) (vm_ci_flag(ci) & VM_CALL_KW_SPLAT)
26739#define IS_ARGS_KW_OR_KW_SPLAT(ci) (vm_ci_flag(ci) & (VM_CALL_KWARG | VM_CALL_KW_SPLAT))
26740#define IS_ARGS_KW_SPLAT_MUT(ci) (vm_ci_flag(ci) & VM_CALL_KW_SPLAT_MUT)
26741#define RUBY_RACTOR_H 1
26742#pragma GCC visibility push(default)
26743#define RB_RACTOR_LOCAL_STORAGE_TYPE_FREE (&rb_ractor_local_storage_type_free)
26744#pragma GCC visibility pop
26745#define RB_OBJ_SHAREABLE_P(obj) FL_TEST_RAW((obj), RUBY_FL_SHAREABLE)
26746#define RACTOR_CHECK_MODE (0 || VM_CHECK_MODE || RUBY_DEBUG)
26747#pragma GCC visibility push(default)
26748#pragma GCC visibility pop
26749#define rb_ractor_confirm_belonging(obj) obj
26750#define RUBY_VM_SYNC_H
26751#define LOCATION_ARGS void
26752#define LOCATION_PARAMS
26753#define APPEND_LOCATION_ARGS
26754#define APPEND_LOCATION_PARAMS
26755#define RB_VM_LOCKED_P() rb_vm_locked_p()
26756#define RB_VM_LOCK() rb_vm_lock(__FILE__, __LINE__)
26757#define RB_VM_UNLOCK() rb_vm_unlock(__FILE__, __LINE__)
26758#define RB_VM_LOCK_ENTER_CR_LEV(cr,levp) rb_vm_lock_enter_cr(cr, levp, __FILE__, __LINE__)
26759#define RB_VM_LOCK_LEAVE_CR_LEV(cr,levp) rb_vm_lock_leave_cr(cr, levp, __FILE__, __LINE__)
26760#define RB_VM_LOCK_ENTER_LEV(levp) rb_vm_lock_enter(levp, __FILE__, __LINE__)
26761#define RB_VM_LOCK_LEAVE_LEV(levp) rb_vm_lock_leave(levp, __FILE__, __LINE__)
26762#define RB_VM_LOCK_ENTER() { unsigned int _lev; RB_VM_LOCK_ENTER_LEV(&_lev);
26763#define RB_VM_LOCK_LEAVE() RB_VM_LOCK_LEAVE_LEV(&_lev); }
26764#define RB_VM_LOCK_ENTER_LEV_NB(levp) rb_vm_lock_enter_nb(levp, __FILE__, __LINE__)
26765#define RB_VM_LOCK_ENTER_NO_BARRIER() { unsigned int _lev; RB_VM_LOCK_ENTER_LEV_NB(&_lev);
26766#define RB_VM_LOCK_LEAVE_NO_BARRIER() RB_VM_LOCK_LEAVE_LEV(&_lev); }
26767#define ASSERT_vm_locking()
26768#define ASSERT_vm_unlocking()
26769#define BUILTIN_H_INCLUDED
26770#define RB_BUILTIN_FUNCTION(_i,_name,_fname,_arity,_compiler) { .name = #_name, .func_ptr = (void *)_fname, .argc = _arity, .index = _i, .compiler = _compiler, }
26772#define DTRACE_PROBES_DISABLED 1
26773#define RUBY_DTRACE_METHOD_ENTRY_ENABLED() 0
26774#define RUBY_DTRACE_METHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
26775#define RUBY_DTRACE_METHOD_RETURN_ENABLED() 0
26776#define RUBY_DTRACE_METHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
26777#define RUBY_DTRACE_CMETHOD_ENTRY_ENABLED() 0
26778#define RUBY_DTRACE_CMETHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
26779#define RUBY_DTRACE_CMETHOD_RETURN_ENABLED() 0
26780#define RUBY_DTRACE_CMETHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
26781#define RUBY_DTRACE_REQUIRE_ENTRY_ENABLED() 0
26782#define RUBY_DTRACE_REQUIRE_ENTRY(rquiredfile,filename,lineno) do {} while (0)
26783#define RUBY_DTRACE_REQUIRE_RETURN_ENABLED() 0
26784#define RUBY_DTRACE_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
26785#define RUBY_DTRACE_FIND_REQUIRE_ENTRY_ENABLED() 0
26786#define RUBY_DTRACE_FIND_REQUIRE_ENTRY(requiredfile,filename,lineno) do {} while (0)
26787#define RUBY_DTRACE_FIND_REQUIRE_RETURN_ENABLED() 0
26788#define RUBY_DTRACE_FIND_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
26789#define RUBY_DTRACE_LOAD_ENTRY_ENABLED() 0
26790#define RUBY_DTRACE_LOAD_ENTRY(loadedfile,filename,lineno) do {} while (0)
26791#define RUBY_DTRACE_LOAD_RETURN_ENABLED() 0
26792#define RUBY_DTRACE_LOAD_RETURN(loadedfile,filename,lineno) do {} while (0)
26793#define RUBY_DTRACE_RAISE_ENABLED() 0
26794#define RUBY_DTRACE_RAISE(classname,filename,lineno) do {} while (0)
26795#define RUBY_DTRACE_OBJECT_CREATE_ENABLED() 0
26796#define RUBY_DTRACE_OBJECT_CREATE(classname,filename,lineno) do {} while (0)
26797#define RUBY_DTRACE_ARRAY_CREATE_ENABLED() 0
26798#define RUBY_DTRACE_ARRAY_CREATE(length,filename,lineno) do {} while (0)
26799#define RUBY_DTRACE_HASH_CREATE_ENABLED() 0
26800#define RUBY_DTRACE_HASH_CREATE(length,filename,lineno) do {} while (0)
26801#define RUBY_DTRACE_STRING_CREATE_ENABLED() 0
26802#define RUBY_DTRACE_STRING_CREATE(length,filename,lineno) do {} while (0)
26803#define RUBY_DTRACE_SYMBOL_CREATE_ENABLED() 0
26804#define RUBY_DTRACE_SYMBOL_CREATE(str,filename,lineno) do {} while (0)
26805#define RUBY_DTRACE_PARSE_BEGIN_ENABLED() 0
26806#define RUBY_DTRACE_PARSE_BEGIN(sourcefile,lineno) do {} while (0)
26807#define RUBY_DTRACE_PARSE_END_ENABLED() 0
26808#define RUBY_DTRACE_PARSE_END(sourcefile,lineno) do {} while (0)
26809#define RUBY_DTRACE_INSN_ENABLED() 0
26810#define RUBY_DTRACE_INSN(insns_name) do {} while (0)
26811#define RUBY_DTRACE_INSN_OPERAND_ENABLED() 0
26812#define RUBY_DTRACE_INSN_OPERAND(val,insns_name) do {} while (0)
26813#define RUBY_DTRACE_GC_MARK_BEGIN_ENABLED() 0
26814#define RUBY_DTRACE_GC_MARK_BEGIN() do {} while (0)
26815#define RUBY_DTRACE_GC_MARK_END_ENABLED() 0
26816#define RUBY_DTRACE_GC_MARK_END() do {} while (0)
26817#define RUBY_DTRACE_GC_SWEEP_BEGIN_ENABLED() 0
26818#define RUBY_DTRACE_GC_SWEEP_BEGIN() do {} while (0)
26819#define RUBY_DTRACE_GC_SWEEP_END_ENABLED() 0
26820#define RUBY_DTRACE_GC_SWEEP_END() do {} while (0)
26821#define RUBY_PROBES_HELPER_H
26822#pragma GCC visibility push(default)
26823#pragma GCC visibility pop
26824#define RUBY_DTRACE_METHOD_HOOK(name,ec,klazz,id) do { if (UNLIKELY(RUBY_DTRACE_ ##name ##_ENABLED())) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, klazz, id, &args)) { RUBY_DTRACE_ ##name(args.classname, args.methodname, args.filename, args.line_no); } } } while (0)
26825#define RUBY_DTRACE_METHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_ENTRY, ec, klass, id)
26826#define RUBY_DTRACE_METHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_RETURN, ec, klass, id)
26827#define RUBY_DTRACE_CMETHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_ENTRY, ec, klass, id)
26828#define RUBY_DTRACE_CMETHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_RETURN, ec, klass, id)
26829#pragma GCC diagnostic push
26830#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26831#pragma GCC diagnostic pop
26833#define RB_CONST_PRIVATE_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PRIVATE)
26834#define RB_CONST_PUBLIC_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PUBLIC)
26835#define RB_CONST_DEPRECATED_P(ce) ((ce)->flag & CONST_DEPRECATED)
26836#pragma GCC visibility push(default)
26837#pragma GCC visibility pop
26838#define INTERNAL_COMPAR_H
26839#define STRING_P(s) (RB_TYPE_P((s), T_STRING) && CLASS_OF(s) == rb_cString)
26840#define NEW_CMP_OPT_MEMO(type,value) NEW_PARTIAL_MEMO_FOR(type, value, cmp_opt)
26841#define CMP_OPTIMIZABLE_BIT(type) (1U << TOKEN_PASTE(cmp_opt_,type))
26842#define CMP_OPTIMIZABLE(data,type) (((data).opt_inited & CMP_OPTIMIZABLE_BIT(type)) ? ((data).opt_methods & CMP_OPTIMIZABLE_BIT(type)) : (((data).opt_inited |= CMP_OPTIMIZABLE_BIT(type)), rb_method_basic_definition_p(TOKEN_PASTE(rb_c,type), id_cmp) && ((data).opt_methods |= CMP_OPTIMIZABLE_BIT(type))))
26843#define OPTIMIZED_CMP(a,b,data) ((FIXNUM_P(a) && FIXNUM_P(b) && CMP_OPTIMIZABLE(data, Integer)) ? (((long)a > (long)b) ? 1 : ((long)a < (long)b) ? -1 : 0) : (STRING_P(a) && STRING_P(b) && CMP_OPTIMIZABLE(data, String)) ? rb_str_cmp(a, b) : (RB_FLOAT_TYPE_P(a) && RB_FLOAT_TYPE_P(b) && CMP_OPTIMIZABLE(data, Float)) ? rb_float_cmp(a, b) : rb_cmpint(rb_funcallv(a, id_cmp, 1, &b), a, b))
26844#define INTERNAL_HASH_H
26845#define RHASH_AR_TABLE_MAX_SIZE SIZEOF_VALUE
26846#define RHASH_LEV_MASK (FL_USER13 | FL_USER14 | FL_USER15 | FL_USER16 | FL_USER17 | FL_USER18 | FL_USER19)
26847#define RHASH(obj) ((struct RHash *)(obj))
26848#pragma GCC visibility push(default)
26849#pragma GCC visibility pop
26850#pragma GCC visibility push(default)
26851#define RHASH_TBL_RAW(h) rb_hash_tbl_raw(h, __FILE__, __LINE__)
26852#pragma GCC visibility pop
26853#define INTERNAL_NUMERIC_H
26854#define INTERNAL_BIGNUM_H
26855#define BDIGIT unsigned int
26856#define SIZEOF_BDIGIT SIZEOF_INT
26857#define BDIGIT_DBL unsigned LONG_LONG
26858#define BDIGIT_DBL_SIGNED LONG_LONG
26859#define PRI_BDIGIT_PREFIX ""
26860#define PRI_BDIGIT_DBL_PREFIX PRI_LL_PREFIX
26861#define SIZEOF_ACTUAL_BDIGIT SIZEOF_BDIGIT
26862#define PRIdBDIGIT PRI_BDIGIT_PREFIX"d"
26863#define PRIiBDIGIT PRI_BDIGIT_PREFIX"i"
26864#define PRIoBDIGIT PRI_BDIGIT_PREFIX"o"
26865#define PRIuBDIGIT PRI_BDIGIT_PREFIX"u"
26866#define PRIxBDIGIT PRI_BDIGIT_PREFIX"x"
26867#define PRIXBDIGIT PRI_BDIGIT_PREFIX"X"
26868#define PRIdBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"d"
26869#define PRIiBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"i"
26870#define PRIoBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"o"
26871#define PRIuBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"u"
26872#define PRIxBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"x"
26873#define PRIXBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"X"
26874#define RBIGNUM(obj) ((struct RBignum *)(obj))
26875#define BIGNUM_SIGN_BIT FL_USER1
26876#define BIGNUM_EMBED_FLAG ((VALUE)FL_USER2)
26877#define BIGNUM_EMBED_LEN_NUMBITS 3
26878#define BIGNUM_EMBED_LEN_MASK (~(~(VALUE)0U << BIGNUM_EMBED_LEN_NUMBITS) << BIGNUM_EMBED_LEN_SHIFT)
26879#define BIGNUM_EMBED_LEN_SHIFT (FL_USHIFT+3)
26880#define BIGNUM_EMBED_LEN_MAX (SIZEOF_VALUE*RBIMPL_RVALUE_EMBED_LEN_MAX/SIZEOF_ACTUAL_BDIGIT)
26881#pragma GCC visibility push(default)
26882#pragma GCC visibility pop
26883#pragma GCC visibility push(default)
26884#pragma GCC visibility pop
26885#define INTERNAL_BITS_H
26886#define HALF_LONG_MSB ((SIGNED_VALUE)1<<((SIZEOF_LONG*CHAR_BIT-1)/2))
26887#define SIGNED_INTEGER_TYPE_P(T) (0 > ((T)0)-1)
26888#define SIGNED_INTEGER_MIN(T) ((sizeof(T) == sizeof(int8_t)) ? ((T)INT8_MIN) : ((sizeof(T) == sizeof(int16_t)) ? ((T)INT16_MIN) : ((sizeof(T) == sizeof(int32_t)) ? ((T)INT32_MIN) : ((sizeof(T) == sizeof(int64_t)) ? ((T)INT64_MIN) : 0))))
26889#define SIGNED_INTEGER_MAX(T) ((T)(SIGNED_INTEGER_MIN(T) ^ ((T)~(T)0)))
26890#define UNSIGNED_INTEGER_MAX(T) ((T)~(T)0)
26891#define MUL_OVERFLOW_P(a,b) __builtin_mul_overflow_p((a), (b), (__typeof__(a * b))0)
26892#define MUL_OVERFLOW_SIGNED_INTEGER_P(a,b,min,max) ( (a) == 0 ? 0 : (a) == -1 ? (b) < -(max) : (a) > 0 ? ((b) > 0 ? (max) / (a) < (b) : (min) / (a) > (b)) : ((b) > 0 ? (min) / (a) < (b) : (max) / (a) > (b)))
26893#define MUL_OVERFLOW_FIXNUM_P(a,b) __extension__ ({ struct { long fixnum : sizeof(long) * CHAR_BIT - 1; } c = { 0 }; __builtin_mul_overflow_p((a), (b), c.fixnum); })
26894#define MUL_OVERFLOW_LONG_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
26895#define MUL_OVERFLOW_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
26896#define MUL_OVERFLOW_INT_P(a,b) MUL_OVERFLOW_P(a, b)
26897#define bit_length(x) (unsigned int) (sizeof(x) <= sizeof(int32_t) ? 32 - nlz_int32((uint32_t)(x)) : sizeof(x) <= sizeof(int64_t) ? 64 - nlz_int64((uint64_t)(x)) : 128 - nlz_int128((uint128_t)(x)))
26898#define swap16 ruby_swap16
26899#define swap32 ruby_swap32
26900#define swap64 ruby_swap64
26901#define INTERNAL_FIXNUM_H
26902#define DLONG int128_t
26903#define DL2NUM(x) (RB_FIXABLE(x) ? LONG2FIX(x) : rb_int128t2big(x))
26904#define ROUND_TO(mode,even,up,down) ((mode) == RUBY_NUM_ROUND_HALF_EVEN ? even : (mode) == RUBY_NUM_ROUND_HALF_UP ? up : down)
26905#define ROUND_FUNC(mode,name) ROUND_TO(mode, name ##_half_even, name ##_half_up, name ##_half_down)
26906#define ROUND_CALL(mode,name,args) ROUND_TO(mode, name ##_half_even args, name ##_half_up args, name ##_half_down args)
26907#define ROUND_DEFAULT RUBY_NUM_ROUND_HALF_UP
26908#define RFLOAT(obj) ((struct RFloat *)(obj))
26909#define rb_float_value rb_float_value_inline
26910#define rb_float_new rb_float_new_inline
26911#pragma GCC visibility push(default)
26912#pragma GCC visibility pop
26913#pragma GCC visibility push(default)
26914#pragma GCC visibility pop
26915#define INTERNAL_RANDOM_H
26916#define INTERNAL_VARIABLE_H
26917#define ROBJECT_TRANSIENT_FLAG FL_USER13
26918#pragma GCC visibility push(default)
26919#pragma GCC visibility pop
26920#pragma GCC visibility push(default)
26921#pragma GCC visibility pop
26922#define INTERNAL_STRUCT_H
26923#define RSTRUCT(obj) ((struct RStruct *)(obj))
26924#define RSTRUCT_LEN internal_RSTRUCT_LEN
26925#define RSTRUCT_SET internal_RSTRUCT_SET
26926#define RSTRUCT_GET internal_RSTRUCT_GET
26927#pragma GCC diagnostic push
26928#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26929#pragma GCC diagnostic pop
26930#define RUBY_TOPLEVEL_VARIABLE_H
26931#define BIN(n) YARVINSN_ ##n
26932#define ASSERT_VM_INSTRUCTION_SIZE(array) STATIC_ASSERT(numberof_ ##array, numberof(array) == VM_INSTRUCTION_SIZE)
26933#define vm_check_canary(ec,sp)
26934#define vm_check_frame(a,b,c,d)
26935#define vm_push_frame_debug_counter_inc(ec,cfp,t)
26936#pragma GCC diagnostic push
26937#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26938#pragma GCC diagnostic pop
26939#pragma GCC diagnostic push
26940#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26941#pragma GCC diagnostic pop
26942#pragma GCC diagnostic push
26943#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26944#pragma GCC diagnostic pop
26945#pragma GCC diagnostic push
26946#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26947#pragma GCC diagnostic pop
26948#pragma GCC diagnostic push
26949#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26950#pragma GCC diagnostic pop
26951#pragma GCC diagnostic push
26952#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26953#pragma GCC diagnostic pop
26954#pragma GCC diagnostic push
26955#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26956#pragma GCC diagnostic pop
26957#pragma GCC diagnostic push
26958#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26959#pragma GCC diagnostic pop
26960#pragma GCC diagnostic push
26961#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26962#pragma GCC diagnostic pop
26963#pragma GCC diagnostic push
26964#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26965#pragma GCC diagnostic pop
26966#pragma GCC diagnostic push
26967#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26968#pragma GCC diagnostic pop
26969#pragma GCC diagnostic push
26970#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26971#pragma GCC diagnostic pop
26972#define EQ_UNREDEFINED_P(t) BASIC_OP_UNREDEFINED_P(BOP_EQ, t ##_REDEFINED_OP_FLAG)
26973#undef EQ_UNREDEFINED_P
26974#define CHECK_CMP_NAN(a,b)
26975#define KW_SPECIFIED_BITS_MAX (32-1)
26976#define USE_OPT_HIST 0
26977#define CHECK_CFP_CONSISTENCY(func) (LIKELY(vm_cfp_consistent_p(ec, reg_cfp)) ? (void)0 : rb_bug(func ": cfp consistency error (%p, %p)", (void *)reg_cfp, (void *)(ec->cfp+1)))
26978#pragma GCC diagnostic push
26979#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26980#pragma GCC diagnostic pop
26981#pragma GCC diagnostic push
26982#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26983#pragma GCC diagnostic pop
26984#define VM_CALL_METHOD_ATTR(var,func,nohook) if (UNLIKELY(ruby_vm_event_flags & (RUBY_EVENT_C_CALL | RUBY_EVENT_C_RETURN))) { EXEC_EVENT_HOOK(ec, RUBY_EVENT_C_CALL, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, Qundef); var = func; EXEC_EVENT_HOOK(ec, RUBY_EVENT_C_RETURN, calling->recv, vm_cc_cme(cc)->def->original_id, vm_ci_mid(ci), vm_cc_cme(cc)->owner, (var)); } else { nohook; var = func; }
26985#pragma GCC diagnostic push
26986#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26987#pragma GCC diagnostic pop
26988#pragma GCC diagnostic push
26989#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26990#pragma GCC diagnostic pop
26991#define mexp_search_method vm_search_method_wrap
26992#define mexp_search_super vm_search_super_method
26993#define mexp_search_invokeblock vm_search_invokeblock
26994#define id_cmp idCmp
26996#define IMEMO_CONST_CACHE_SHAREABLE IMEMO_FL_USER0
26997#pragma GCC diagnostic push
26998#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
26999#pragma GCC diagnostic pop
27000#pragma GCC diagnostic push
27001#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
27002#pragma GCC diagnostic pop
27003#pragma GCC diagnostic push
27004#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
27005#pragma GCC diagnostic pop
27006#define VM_TRACE_HOOK(target_event,val) do { if ((pc_events & (target_event)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (target_event), global_hooks, local_hooks, (val)); } } while (0)
27007#undef VM_TRACE_HOOK
27008#define id_mesg idMesg
static VALUE RB_CHR2FIX(unsigned char c)
Converts a C's unsigned char into an instance of rb_cInteger.
static char rb_num2char_inline(VALUE x)
Converts an instance of rb_cNumeric into C's char.
static int rb_isdigit(int c)
Our own locale-insensitive version of isdigit(3).
static int rb_isupper(int c)
Our own locale-insensitive version of isupper(3).
static int rb_iscntrl(int c)
Our own locale-insensitive version of iscntrl(3).
static int rb_ispunct(int c)
Our own locale-insensitive version of ispunct(3).
static int rb_isalnum(int c)
Our own locale-insensitive version of isalnum(3).
static int rb_isxdigit(int c)
Our own locale-insensitive version of isxdigit(3).
static int rb_isspace(int c)
Our own locale-insensitive version of isspace(3).
static int rb_isascii(int c)
Our own locale-insensitive version of isascii(3).
static int rb_toupper(int c)
Our own locale-insensitive version of toupper(3).
unsigned long ruby_strtoul(const char *str, char **endptr, int base)
Our own locale-insensitive version of strtoul(3).
static int rb_tolower(int c)
Our own locale-insensitive version of tolower(3).
static int rb_isgraph(int c)
Our own locale-insensitive version of isgraph(3).
static int rb_isalpha(int c)
Our own locale-insensitive version of isalpha(3).
static int rb_islower(int c)
Our own locale-insensitive version of islower(3).
static int rb_isprint(int c)
Identical to rb_isgraph(), except it also returns true for ‘’ '`.
static int rb_isblank(int c)
Our own locale-insensitive version of isblank(3).
#define rb_define_method_id(klass, mid, func, arity)
Defines klass#mid.
#define rb_define_singleton_method(klass, mid, func, arity)
Defines klass.mid.
#define rb_define_protected_method(klass, mid, func, arity)
Defines klass#mid and makes it protected.
#define rb_define_private_method(klass, mid, func, arity)
Defines klass#mid and makes it private.
double rb_float_value(VALUE num)
Extracts its double value from an instance of rb_cFloat.
VALUE rb_float_new_in_heap(double d)
Identical to rb_float_new(), except it does not generate Flonums.
VALUE rb_float_new(double d)
Converts a C's double into an instance of rb_cFloat.
void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data)
Registers an event hook function.
int rb_remove_event_hook(rb_event_hook_func_t func)
Removes the passed function from the list of event hooks.
void(* rb_event_hook_func_t)(rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass)
Type of event hooks.
ruby_fl_ushift
This is an enum because GDB wants it (rather than a macro).
@ RUBY_FL_USHIFT
Number of bits in ruby_fl_type that are not open to users.
static VALUE RB_OBJ_FROZEN_RAW(VALUE obj)
This is an implenentation detail of RB_OBJ_FROZEN().
static bool RB_OBJ_TAINTABLE(VALUE obj)
static VALUE RB_FL_TEST(VALUE obj, VALUE flags)
Tests if the given flag(s) are set or not.
static VALUE RB_FL_TEST_RAW(VALUE obj, VALUE flags)
This is an implenentation detail of RB_FL_TEST().
static bool RB_FL_ABLE(VALUE obj)
Checks if the object is flaggable.
static bool RB_FL_ANY_RAW(VALUE obj, VALUE flags)
This is an implenentation detail of RB_FL_ANY().
static void rb_obj_freeze_inline(VALUE x)
Prevents further modifications to the given object.
static bool RB_FL_ANY(VALUE obj, VALUE flags)
Identical to RB_FL_TEST(), except it returns bool.
static void RB_FL_SET_RAW(VALUE obj, VALUE flags)
This is an implenentation detail of RB_FL_SET().
static bool RB_FL_ALL(VALUE obj, VALUE flags)
Identical to RB_FL_ANY(), except it mandates all passed flags be set.
static bool RB_OBJ_FROZEN(VALUE obj)
Checks if an object is frozen.
static bool RB_OBJ_TAINTED(VALUE obj)
static VALUE RB_OBJ_TAINTED_RAW(VALUE obj)
static void RB_OBJ_INFECT(VALUE dst, VALUE src)
static void RB_FL_UNSET_RAW(VALUE obj, VALUE flags)
This is an implenentation detail of RB_FL_UNSET().
static void RB_FL_SET(VALUE obj, VALUE flags)
Sets the given flag(s).
static void RB_OBJ_INFECT_RAW(VALUE dst, VALUE src)
static void RB_FL_REVERSE(VALUE obj, VALUE flags)
Reverses the flags.
static void RB_FL_UNSET(VALUE obj, VALUE flags)
Clears the given flag(s).
static void RB_OBJ_FREEZE_RAW(VALUE obj)
This is an implenentation detail of RB_OBJ_FREEZE().
static void RB_FL_REVERSE_RAW(VALUE obj, VALUE flags)
This is an implenentation detail of RB_FL_REVERSE().
static bool RB_FL_ALL_RAW(VALUE obj, VALUE flags)
This is an implenentation detail of RB_FL_ALL().
@ RUBY_FL_PROMOTED1
This flag has something to do with our garbage collector.
@ RUBY_ELTS_SHARED
This flag has something to do with data structures.
@ RUBY_FL_USER9
User-defined flag.
@ RUBY_FL_SINGLETON
This flag has something to do with an object's class.
@ RUBY_FL_USER8
User-defined flag.
@ RUBY_FL_USER11
User-defined flag.
@ RUBY_FL_USER5
User-defined flag.
@ RUBY_FL_USER3
User-defined flag.
@ RUBY_FL_USER17
User-defined flag.
@ RUBY_FL_USER10
User-defined flag.
@ RUBY_FL_USER7
User-defined flag.
@ RUBY_FL_PROMOTED0
This flag has something to do with our garbage collector.
@ RUBY_FL_USER14
User-defined flag.
@ RUBY_FL_USER6
User-defined flag.
@ RUBY_FL_USER16
User-defined flag.
@ RUBY_FL_EXIVAR
This flag has something to do with instance variables.
@ RUBY_FL_PROMOTED
This flag has something to do with our garbage collector.
@ RUBY_FL_USER0
User-defined flag.
@ RUBY_FL_FREEZE
This flag has something to do with data immutability.
@ RUBY_FL_USER15
User-defined flag.
@ RUBY_FL_SEEN_OBJ_ID
This flag has something to do with object IDs.
@ RUBY_FL_USER2
User-defined flag.
@ RUBY_FL_USER4
User-defined flag.
@ RUBY_FL_USER18
User-defined flag.
@ RUBY_FL_USER1
User-defined flag.
@ RUBY_FL_SHAREABLE
This flag has something to do with Ractor.
@ RUBY_FL_FINALIZE
This flag has something to do with finalisers.
@ RUBY_FL_USER19
User-defined flag.
@ RUBY_FL_USER13
User-defined flag.
@ RUBY_FL_USER12
User-defined flag.
static void RB_OBJ_TAINT_RAW(VALUE obj)
static void RB_OBJ_TAINT(VALUE obj)
int ruby_glob(const char *pattern, int flags, ruby_glob_func *func, VALUE arg)
Identical to rb_glob(), except it returns opaque exception states instead of raising exceptions.
void rb_glob(const char *pattern, void(*func)(const char *path, VALUE arg, void *enc), VALUE arg)
The "glob" operator.
int ruby_brace_glob(const char *pattern, int flags, ruby_glob_func *func, VALUE arg)
Identical to ruby_glob(), @shyouhei currently suspects.
int ruby_glob_func(const char *path, VALUE arg, void *enc)
Type of a glob callback function.
void rb_include_module(VALUE klass, VALUE module)
Includes a module to a class.
VALUE rb_define_class(const char *, VALUE)
Defines a top-level class.
void rb_extend_object(VALUE obj, VALUE module)
Extend the object with the module.
void rb_prepend_module(VALUE klass, VALUE module)
Identical to rb_include_module(), except it "prepends" the passed module to the klass,...
VALUE rb_define_class_under(VALUE, const char *, VALUE)
Defines a class under the namespace of outer.
VALUE rb_define_module(const char *)
Defines a top-level module.
VALUE rb_define_module_under(VALUE, const char *)
Defines a module under the namespace of outer.
void rb_define_alias(VALUE, const char *, const char *)
Defines an alias of a method.
void rb_define_module_function(VALUE module, const char *name, VALUE(*func)(ANYARGS), int argc)
Defines a module function for a module.
void rb_need_block(void)
Declares that the current method needs a block.
void rb_define_attr(VALUE, const char *, int, int)
Defines public accessor method(s) for an attribute.
void rb_undef_method(VALUE, const char *)
Defines an undef of a method.
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
Defines a method.
int rb_keyword_given_p(void)
Determines if the current method is given a keyword argument.
int rb_block_given_p(void)
Determines if the current method is given a block.
void rb_define_global_function(const char *name, VALUE(*func)(ANYARGS), int argc)
Defines a global function.
void ruby_stop(int ex)
Calls ruby_cleanup() and exits the process.
int ruby_exec_node(void *n)
Identical to ruby_run_node(), except it returns an opaque execution status.
int ruby_setup(void)
Initializes the VM and builtin libraries.
void ruby_finalize(void)
Runs the VM finalization processes.
void ruby_init_stack(volatile VALUE *addr)
Set stack bottom of Ruby implementation.
void ruby_script(const char *name)
Sets the current script name to this value.
void ruby_set_argv(int argc, char **argv)
Sets argv that ruby understands.
void ruby_set_script_name(VALUE name)
Identical to ruby_script(), except it takes the name as a Ruby String instance.
int ruby_cleanup(int ex)
Destructs the VM.
size_t ruby_stack_length(VALUE **p)
Queries what Ruby thinks is the machine stack.
int ruby_stack_check(void)
Checks for stack overflow.
void ruby_init_loadpath(void)
Sets up $LOAD_PATH.
void * ruby_process_options(int argc, char **argv)
Identical to ruby_options(), except it raises ruby-level exceptions on failure.
void ruby_prog_init(void)
Defines built-in variables.
void ruby_sig_finalize(void)
Clear signal handlers.
void ruby_incpush(const char *path)
Appends the given path to the end of the load path.
void rb_notimplement(void)
void rb_mod_sys_fail(VALUE mod, const char *mesg)
Identical to rb_sys_fail(), except it takes additional module to extend the exception object before r...
rb_warning_category_t
Warning categories.
VALUE rb_eLocalJumpError
LocalJumpError exception.
void rb_category_warn(rb_warning_category_t cat, const char *fmt,...)
Identical to rb_category_warning(), except it reports always regardless of runtime -W flag.
void rb_raise(VALUE exc, const char *fmt,...)
Exception entry point.
void rb_compile_warn(const char *file, int line, const char *fmt,...)
Identical to rb_compile_warning(), except it reports always regardless of runtime -W flag.
void rb_category_warning(rb_warning_category_t cat, const char *fmt,...)
Identical to rb_warning(), except it takes additional "category" parameter.
void rb_mod_syserr_fail(VALUE mod, int e, const char *mesg)
Identical to rb_mod_sys_fail(), except it does not depend on C global variable errno.
VALUE rb_rescue2(VALUE(*b_proc)(VALUE), VALUE data1, VALUE(*r_proc)(VALUE, VALUE), VALUE data2,...)
An equivalent of rescue clause.
void rb_syserr_fail(int e, const char *mesg)
Raises appropriate exception that represents a C errno.
void rb_bug(const char *fmt,...)
Interpreter panic switch.
void rb_iter_break(void)
Breaks from a block.
void rb_sys_fail(const char *mesg)
Converts a C errno into a Ruby exception, then raises it.
VALUE rb_eZeroDivError
ZeroDivisionError exception.
void rb_readwrite_syserr_fail(enum rb_io_wait_readwrite waiting, int err, const char *msg)
Identical to rb_readwrite_sys_fail(), except it does not depend on C global variable errno.
void rb_sys_warning(const char *fmt,...)
Identical to rb_sys_fail(), except it does not raise an exception to render a warning instead.
VALUE rb_eIOError
IOError exception.
VALUE rb_syserr_new_str(int n, VALUE arg)
Identical to rb_syserr_new(), except it takes the message in Ruby's String instead of C's.
void rb_mod_syserr_fail_str(VALUE mod, int e, VALUE mesg)
Identical to rb_mod_syserr_fail(), except it takes the message in Ruby's String instead of C's.
void rb_set_errinfo(VALUE err)
Sets the current exception ($!) to the given value.
VALUE rb_eRegexpError
RegexpError exception.
void rb_syserr_fail_str(int e, VALUE mesg)
Identical to rb_syserr_fail(), except it takes the message in Ruby's String instead of C's.
VALUE rb_eEOFError
EOFError exception.
VALUE rb_vrescue2(VALUE(*b_proc)(VALUE), VALUE data1, VALUE(*r_proc)(VALUE, VALUE), VALUE data2, va_list args)
Identical to rb_rescue2(), except it takes va_list instead of variadic number of arguments.
void rb_fatal(const char *fmt,...)
Raises the unsung "fatal" exception.
void rb_readwrite_sys_fail(enum rb_io_wait_readwrite waiting, const char *msg)
Raises appropriate exception using the parameters.
void rb_iter_break_value(VALUE val)
Identical to rb_iter_break(), except it additionally takes the "value" of this breakage.
void rb_category_compile_warn(rb_warning_category_t cat, const char *file, int line, const char *fmt,...)
Identical to rb_compile_warn(), except it also accepts category.
VALUE * rb_ruby_verbose_ptr(void)
This is an implementation detail of ruby_verbose.
VALUE rb_eStopIteration
StopIteration exception.
VALUE rb_eFloatDomainError
FloatDomainError exception.
void rb_warn(const char *fmt,...)
Identical to rb_warning(), except it reports always regardless of runtime -W flag.
void rb_bug_errno(const char *mesg, int errno_arg)
This is a wrapper of rb_bug() which automatically constructs appropriate message from the passed errn...
void rb_compile_warning(const char *file, int line, const char *fmt,...)
Issues a compile-time warning that happens at __file__:__line__.
VALUE rb_rescue(VALUE(*b_proc)(VALUE), VALUE data1, VALUE(*r_proc)(VALUE, VALUE), VALUE data2)
Identical to rb_rescue2(), except it does not take a list of exception classes.
VALUE * rb_ruby_debug_ptr(void)
This is an implementation detail of ruby_debug.
VALUE rb_ensure(VALUE(*b_proc)(VALUE), VALUE data1, VALUE(*e_proc)(VALUE), VALUE data2)
An equivalent to ensure clause.
VALUE rb_errinfo(void)
This is the same as $! in Ruby.
VALUE rb_eSysStackError
SystemStackError exception.
VALUE rb_syserr_new(int err, const char *msg)
Creates an exception object that represents the given C errno.
void rb_sys_fail_str(VALUE mesg)
Identical to rb_sys_fail(), except it takes the message in Ruby's String instead of C's.
void rb_unexpected_type(VALUE x, int t)
Fails with the given object's type incompatibility to the type.
void rb_mod_sys_fail_str(VALUE mod, VALUE mesg)
Identical to rb_mod_sys_fail(), except it takes the message in Ruby's String instead of C's.
VALUE rb_eThreadError
ThreadError exception.
void rb_exit(int status)
Terminates the current execution context.
VALUE rb_eMathDomainError
Math::DomainError exception.
void rb_check_type(VALUE x, int t)
This was the old implementation of Check_Type(), but they diverged.
void rb_warning(const char *fmt,...)
Issues a warning.
@ RB_WARN_CATEGORY_DEPRECATED
Warning is for deprecated features.
@ RB_WARN_CATEGORY_EXPERIMENTAL
Warning is for experimental features.
@ RB_WARN_CATEGORY_NONE
Category unspecified.
VALUE rb_cRational
Rational class.
VALUE rb_cUnboundMethod
UnboundMethod class.
VALUE rb_cTime
Time class.
VALUE rb_cComplex
Complex class.
VALUE rb_cArray
Array class.
VALUE rb_mProcess
Process module.
VALUE rb_mMath
Math module.
VALUE rb_mEnumerable
Enumerable module.
VALUE rb_cMatch
MatchData class.
VALUE rb_cStruct
Struct class.
VALUE rb_cEnumerator
Enumerator class.
VALUE rb_cInteger
Module class.
VALUE rb_stdin
STDIN constant.
VALUE rb_cStat
File::Stat class.
VALUE rb_cBinding
Binding class.
VALUE rb_cRegexp
Regexp class.
VALUE rb_cHash
Hash class.
VALUE rb_stderr
STDERR constant.
VALUE rb_cNumeric
Numeric class.
static VALUE rb_class_of(VALUE obj)
Object to class mapping function.
VALUE rb_cRandom
Random class.
VALUE rb_cEncoding
Encoding class.
VALUE rb_cSymbol
Sumbol class.
VALUE rb_cThread
Thread class.
VALUE rb_cRange
Range class.
VALUE rb_mFileTest
FileTest module.
VALUE rb_mWaitReadable
IO::WaitReadable module.
VALUE rb_mWaitWritable
IO::WaitReadable module.
VALUE rb_mComparable
Comparable module.
VALUE rb_cFloat
Float class.
VALUE rb_cProc
Proc class.
VALUE rb_cFile
File class.
VALUE rb_stdout
STDOUT constant.
VALUE rb_cString
String class.
VALUE rb_cMethod
Method class.
int ruby_run_node(void *n)
Runs the given compiled source and exits this process.
void ruby_init(void)
Calls ruby_setup() and check error.
void * ruby_options(int argc, char **argv)
Processes command line arguments and compiles the Ruby source to execute.
void ruby_show_copyright(void)
Prints the copyright notice of the CRuby interpreter to stdout.
void ruby_sysinit(int *argc, char ***argv)
Initializes the process for libruby.
void ruby_show_version(void)
Prints the version information of the CRuby interpreter to stdout.
int ruby_executable_node(void *n, int *status)
Checks the return value of ruby_options().
VALUE rb_eval_string_wrap(const char *str, int *state)
Identical to rb_eval_string_protect(), except it evaluates the given string under a module binding in...
VALUE rb_funcall_passing_block(VALUE recv, ID mid, int argc, const VALUE *argv)
Identical to rb_funcallv_public(), except you can pass the passed block.
VALUE rb_funcall(VALUE recv, ID mid, int n,...)
Calls a method.
VALUE rb_funcallv_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat)
Identical to rb_funcallv(), except you can specify how to handle the last element of the given array.
VALUE rb_funcallv(VALUE recv, ID mid, int argc, const VALUE *argv)
Identical to rb_funcall(), except it takes the method arguments as a C array.
VALUE rb_funcall_with_block(VALUE recv, ID mid, int argc, const VALUE *argv, VALUE procval)
Identical to rb_funcallv_public(), except you can pass a block.
VALUE rb_eval_string_protect(const char *str, int *state)
Identical to rb_eval_string(), except it avoids potential global escapes.
VALUE rb_call_super_kw(int argc, const VALUE *argv, int kw_splat)
Identical to rb_call_super(), except you can specify how to handle the last element of the given arra...
VALUE rb_funcallv_public(VALUE recv, ID mid, int argc, const VALUE *argv)
Identical to rb_funcallv(), except it only takes public methods into account.
VALUE rb_current_receiver(void)
This resembles ruby's self.
VALUE rb_funcall_passing_block_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat)
Identical to rb_funcallv_passing_block(), except you can specify how to handle the last element of th...
VALUE rb_funcall_with_block_kw(VALUE recv, ID mid, int argc, const VALUE *argv, VALUE procval, int kw_splat)
Identical to rb_funcallv_with_block(), except you can specify how to handle the last element of the g...
VALUE rb_eval_string(const char *str)
Evaluates the given string in an isolated binding.
VALUE rb_call_super(int argc, const VALUE *argv)
This resembles ruby's super.
VALUE rb_funcallv_public_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat)
Identical to rb_funcallv_public(), except you can specify how to handle the last element of the given...
void rb_gc_register_address(VALUE *valptr)
Inform the garbage collector that valptr points to a live Ruby object that should not be moved.
void rb_gc_unregister_address(VALUE *valptr)
Inform the garbage collector that a pointer previously passed to rb_gc_register_address() no longer p...
void rb_gc_register_mark_object(VALUE object)
Inform the garbage collector that object is a live Ruby object that should not be moved.
void rb_undef(VALUE mod, ID mid)
Inserts a method entry that hides previous method definition of the given name.
VALUE rb_class_descendants(VALUE klass)
Queries the class's descendants.
int rb_respond_to(VALUE obj, ID mid)
Queries if the object responds to the method.
VALUE(* rb_alloc_func_t)(VALUE klass)
This is the type of functions that ruby calls when trying to allocate an object.
void rb_undef_alloc_func(VALUE klass)
Deletes the allocator function of a class.
const char * rb_sourcefile(void)
Resembles __FILE__.
void rb_alias(VALUE klass, ID dst, ID src)
Resembles alias.
int rb_method_basic_definition_p(VALUE klass, ID mid)
Well... Let us hesitate from describing what a "basic definition" is.
void rb_attr(VALUE klass, ID name, int need_reader, int need_writer, int honour_visibility)
This function resembles now-deprecated Module#attr.
void rb_remove_method(VALUE klass, const char *name)
Removes a method.
VALUE rb_check_funcall(VALUE recv, ID mid, int argc, const VALUE *argv)
Identical to rb_funcallv(), except it returns RUBY_Qundef instead of raising rb_eNoMethodError.
int rb_frame_method_id_and_class(ID *idp, VALUE *klassp)
Resembles __method__.
rb_alloc_func_t rb_get_alloc_func(VALUE klass)
Queries the allocator function of a class.
VALUE rb_check_funcall_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat)
Identical to rb_check_funcall(), except you can specify how to handle the last element of the given a...
VALUE rb_mod_module_eval(int argc, const VALUE *argv, VALUE mod)
Identical to rb_obj_instance_eval(), except it evaluates within the context of module.
void rb_remove_method_id(VALUE klass, ID mid)
Identical to rb_remove_method(), except it accepts the method name as ID.
VALUE rb_mod_module_exec(int argc, const VALUE *argv, VALUE mod)
Identical to rb_obj_instance_exec(), except it evaluates within the context of module.
void rb_define_alloc_func(VALUE klass, rb_alloc_func_t func)
Sets the allocator function of a class.
VALUE rb_obj_instance_exec(int argc, const VALUE *argv, VALUE recv)
Executes the given block within the context of the receiver.
VALUE rb_eval_cmd_kw(VALUE cmd, VALUE arg, int kw_splat)
This API is practically a variant of rb_proc_call_kw() now.
VALUE rb_f_notimplement(int argc, const VALUE *argv, VALUE obj, VALUE marker)
Raises rb_eNotImpError.
VALUE rb_apply(VALUE recv, ID mid, VALUE args)
Identical to rb_funcallv(), except it takes Ruby's array instead of C's.
VALUE rb_make_backtrace(void)
Creates the good old fashioned array-of-strings style backtrace info.
int rb_method_boundp(VALUE klass, ID id, int ex)
Queries if the klass has this method.
void rb_backtrace(void)
Prints the backtrace out to the standard error.
VALUE rb_obj_instance_eval(int argc, const VALUE *argv, VALUE recv)
Evaluates a string containing Ruby source code, or the given block, within the context of the receive...
int rb_sourceline(void)
Resembles __LINE__.
int rb_obj_respond_to(VALUE obj, ID mid, int private_p)
Identical to rb_respond_to(), except it additionally takes the visibility parameter.
#define strtod(s, e)
Just another name of ruby_strtod.
#define strdup(s)
Just another name of ruby_strdup.
static unsigned int RB_FIX2UINT(VALUE x)
Converts a Fixnum into C's int.
unsigned long rb_num2uint(VALUE num)
Converts an instance of rb_cNumeric into C's unsigned long.
long rb_fix2int(VALUE num)
Identical to rb_num2int().
static int rb_num2int_inline(VALUE x)
Converts an instance of rb_cNumeric into C's int.
long rb_num2int(VALUE num)
Converts an instance of rb_cNumeric into C's long.
static VALUE rb_uint2num_inline(unsigned int v)
Converts a C's unsigned int into an instance of rb_cInteger.
static int RB_FIX2INT(VALUE x)
Converts a Fixnum into C's int.
static unsigned int RB_NUM2UINT(VALUE x)
Converts an instance of rb_cNumeric into C's unsigned int.
static VALUE rb_int2num_inline(int v)
Converts a C's int into an instance of rb_cInteger.
unsigned long rb_fix2uint(VALUE num)
Identical to rb_num2uint().
LONG_LONG rb_num2ll(VALUE num)
Converts an instance of rb_cNumeric into C's long long.
unsigned LONG_LONG rb_num2ull(VALUE num)
Converts an instance of rb_cNumeric into C's unsigned long long.
static VALUE rb_ull2num_inline(unsigned LONG_LONG n)
Converts a C's unsigned long long into an instance of rb_cInteger.
VALUE rb_ull2inum(unsigned LONG_LONG num)
Converts a C's unsigned long long into an instance of rb_cInteger.
static VALUE rb_ll2num_inline(LONG_LONG n)
Converts a C's long long into an instance of rb_cInteger.
VALUE rb_ll2inum(LONG_LONG num)
Converts a C's long long into an instance of rb_cInteger.
static LONG_LONG rb_num2ll_inline(VALUE x)
Converts an instance of rb_cNumeric into C's long long.
static unsigned LONG_LONG rb_num2ull_inline(VALUE x)
Converts an instance of rb_cNumeric into C's unsigned long long.
VALUE rb_int2inum(intptr_t i)
Converts a C's intptr_t into an instance of rb_cInteger.
VALUE rb_uint2big(uintptr_t i)
Converts a C's intptr_t into an instance of rb_cInteger.
VALUE rb_int2big(intptr_t i)
Converts a C's intptr_t into an instance of rb_cInteger.
VALUE rb_uint2inum(uintptr_t i)
Converts a C's uintptr_t into an instance of rb_cInteger.
VALUE rb_catch_obj(VALUE tag, rb_block_call_func_t func, VALUE data)
Identical to rb_catch(), except it catches arbitrary Ruby objects.
VALUE rb_each(VALUE obj)
This is a shorthand of calling obj.each.
VALUE rb_block_call(VALUE obj, ID mid, int argc, const VALUE *argv, rb_block_call_func_t proc, VALUE data2)
Identical to rb_funcallv(), except it additionally passes a function as a block.
VALUE rb_yield_values(int n,...)
Identical to rb_yield(), except it takes variadic number of parameters and pass them to the block.
VALUE rb_yield_splat(VALUE ary)
Identical to rb_yield_values(), except it splats an array to generate the list of parameters.
void rb_throw(const char *tag, VALUE val)
Transfers control to the end of the active catch block waiting for tag.
VALUE rb_yield_values2(int n, const VALUE *argv)
Identical to rb_yield_values(), except it takes the parameters as a C array instead of variadic argum...
VALUE rb_yield(VALUE val)
Yields the block.
VALUE rb_yield_values_kw(int n, const VALUE *argv, int kw_splat)
Identical to rb_yield_values2(), except you can specify how to handle the last element of the given a...
VALUE rb_yield_block(RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg, callback_arg))
Pass a passed block.
void rb_throw_obj(VALUE tag, VALUE val)
Identical to rb_throw(), except it allows arbitrary Ruby object to become a tag.
VALUE rb_block_call_func(RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg, callback_arg))
This is the type of a function that the interpreter expect for C-backended blocks.
VALUE rb_iterate(VALUE(*func1)(VALUE), VALUE data1, rb_block_call_func_t proc, VALUE data2)
Old way to iterate a block.
VALUE rb_catch(const char *tag, rb_block_call_func_t func, VALUE data)
Executes the passed block and catches values thrown from inside of it.
VALUE rb_block_call_kw(VALUE obj, ID mid, int argc, const VALUE *argv, rb_block_call_func_t proc, VALUE data2, int kw_splat)
Identical to rb_funcallv_kw(), except it additionally passes a function as a block.
VALUE rb_yield_splat_kw(VALUE ary, int kw_splat)
Identical to rb_yield_splat(), except you can specify how to handle the last element of the given arr...
static long rb_num2long_inline(VALUE x)
Converts an instance of rb_cNumeric into C's long.
static VALUE RB_INT2FIX(long i)
Converts a C's long into an instance of rb_cInteger.
static unsigned long rb_num2ulong_inline(VALUE x)
Converts an instance of rb_cNumeric into C's unsigned long.
static int rb_long2int_inline(long n)
Checks if int can hold the given integer.
static VALUE rb_ulong2num_inline(unsigned long v)
Converts a C's unsigned long into an instance of rb_cInteger.
static long rb_fix2long(VALUE x)
Converts a Fixnum into C's long.
void rb_out_of_int(SIGNED_VALUE num)
This is an utility function to raise an rb_eRangeError.
long rb_num2long(VALUE num)
Converts an instance of rb_cNumeric into C's long.
unsigned long rb_num2ulong(VALUE num)
Converts an instance of rb_cNumeric into C's unsigned long.
static VALUE rb_long2num_inline(long v)
Converts a C's long into an instance of rb_cInteger.
static unsigned long rb_fix2ulong(VALUE x)
Converts a Fixnum into C's unsigned long.
static void * rb_alloc_tmp_buffer2(volatile VALUE *store, long count, size_t elsize)
This is an implementation detail of RB_ALLOCV_N().
static int rb_mul_size_overflow(size_t a, size_t b, size_t max, size_t *c)
VALUE type(ANYARGS)
ANYARGS-ed function type.
VALUE rb_newobj(void)
This is the implementation detail of RB_NEWOBJ.
void rb_copy_generic_ivar(VALUE clone, VALUE obj)
Copies the list of instance variables.
VALUE rb_newobj_of(VALUE klass, VALUE flags)
This is the implementation detail of RB_NEWOBJ_OF.
static long RARRAY_EMBED_LEN(VALUE ary)
Queries the length of the array.
void rb_ary_detransient(VALUE a)
Destructively converts an array of transient backend into ordinal one.
static long rb_array_len(VALUE a)
Queries the length of the array.
static bool RARRAY_TRANSIENT_P(VALUE ary)
Queries if the array is a transient array.
static int RARRAY_LENINT(VALUE ary)
Identical to rb_array_len(), except it differs for the return type.
static void RARRAY_ASET(VALUE ary, long i, VALUE v)
Assigns an object in an array.
static VALUE * RARRAY_PTR(VALUE ary)
Wild use of a C pointer.
@ RARRAY_EMBED_LEN_SHIFT
Where ::RARRAY_EMBED_LEN_MASK resides.
static VALUE RBASIC_CLASS(VALUE obj)
Queries the class of an object.
@ RVALUE_EMBED_LEN_MAX
Max possible number of objects that can be embedded.
int rb_big_sign(VALUE num)
The "sign" of a bignum.
static bool RBIGNUM_NEGATIVE_P(VALUE b)
Checks if the bignum is negative.
static bool RBIGNUM_POSITIVE_P(VALUE b)
Checks if the bignum is positive.
VALUE rb_data_object_wrap(VALUE klass, void *datap, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree)
This is the primitive way to wrap an existing C struct into RData.
static VALUE rb_data_object_alloc(VALUE klass, void *data, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree)
static VALUE rb_data_object_make(VALUE klass, RUBY_DATA_FUNC mark_func, RUBY_DATA_FUNC free_func, void **datap, size_t size)
This is an implementation detail of Data_Make_Struct.
VALUE rb_data_object_zalloc(VALUE klass, size_t size, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree)
Identical to rb_data_object_wrap(), except it allocates a new data region internally instead of takin...
void(* RUBY_DATA_FUNC)(void *)
This is the type of callbacks registered to RData.
static VALUE rb_obj_wb_unprotect(VALUE x, const char *filename, int line)
This is the implementation of RB_OBJ_WB_UNPROTECT().
void rb_gc_writebarrier(VALUE old, VALUE young)
This is the implementation of RB_OBJ_WRITE().
void rb_gc_writebarrier_unprotect(VALUE obj)
This is the implementation of RB_OBJ_WB_UNPROTECT().
static bool RB_OBJ_PROMOTED(VALUE obj)
Tests if the object is "promoted" – that is, whether the object experienced one or more GC marks.
static bool RB_OBJ_PROMOTED_RAW(VALUE obj)
This is the implementation of RB_OBJ_PROMOTED().
VALUE rb_hash_set_ifnone(VALUE hash, VALUE ifnone)
This is the implementation detail of RHASH_SET_IFNONE.
struct st_table * rb_hash_tbl(VALUE hash, const char *file, int line)
This is the implementation detail of RHASH_TBL.
size_t rb_hash_size_num(VALUE hash)
This is the implementation detail of RHASH_SIZE.
@ ROBJECT_EMBED_LEN_MAX
Max possible number of instance variables that can be embedded.
static uint32_t ROBJECT_NUMIV(VALUE obj)
Queries the number of instance variables.
static VALUE * ROBJECT_IVPTR(VALUE obj)
Queries the instance variables.
static VALUE RREGEXP_SRC(VALUE rexp)
Convenient getter function.
static char * RREGEXP_SRC_END(VALUE rexp)
Convenient getter function.
static long RREGEXP_SRC_LEN(VALUE rexp)
Convenient getter function.
static char * RREGEXP_SRC_PTR(VALUE rexp)
Convenient getter function.
VALUE rb_str_export_locale(VALUE obj)
Identical to rb_str_export(), except it converts into the locale encoding instead.
char * rb_string_value_cstr(volatile VALUE *ptr)
Identical to rb_string_value_ptr(), except it additionally checks for the contents for viability as a...
static long RSTRING_EMBED_LEN(VALUE str)
Queries the length of the string.
static int RSTRING_LENINT(VALUE str)
Identical to RSTRING_LEN(), except it differs for the return type.
static char * RSTRING_END(VALUE str)
Queries the end of the contents pointer of the string.
VALUE rb_string_value(volatile VALUE *ptr)
Identical to rb_str_to_str(), except it fills the passed pointer with the converted object.
static long RSTRING_LEN(VALUE str)
Queries the length of the string.
VALUE rb_str_export(VALUE obj)
Identical to rb_str_to_str(), except it additionally converts the string into default external encodi...
char * rb_string_value_ptr(volatile VALUE *ptr)
Identical to rb_str_to_str(), except it returns the converted string's backend memory region.
VALUE rb_str_to_str(VALUE obj)
Identical to rb_check_string_type(), except it raises exceptions in case of conversion failures.
static char * RSTRING_PTR(VALUE str)
Queries the contents pointer of the string.
static long RSTRUCT_LEN(VALUE st)
Returns the number of struct members.
static VALUE RSTRUCT_SET(VALUE st, int k, VALUE v)
Resembles Struct#[]=.
static VALUE RSTRUCT_GET(VALUE st, int k)
Resembles Struct#[].
VALUE rb_struct_aset(VALUE st, VALUE k, VALUE v)
Resembles Struct#[]=.
VALUE rb_struct_size(VALUE st)
Returns the number of struct members.
VALUE rb_struct_aref(VALUE st, VALUE k)
Resembles Struct#[].
static bool RTYPEDDATA_P(VALUE obj)
Checks whether the passed object is RTypedData or RData.
VALUE rb_data_typed_object_wrap(VALUE klass, void *datap, const rb_data_type_t *type)
This is the primitive way to wrap an existing C struct into RTypedData.
VALUE rb_data_typed_object_zalloc(VALUE klass, size_t size, const rb_data_type_t *type)
Identical to rb_data_typed_object_wrap(), except it allocates a new data region internally instead of...
static VALUE rb_data_typed_object_alloc(VALUE klass, void *datap, const rb_data_type_t *type)
static VALUE rb_data_typed_object_make(VALUE klass, const rb_data_type_t *type, void **datap, size_t size)
While we don't stop you from using this function, it seems to be an implementation detail of TypedDat...
static const struct rb_data_type_struct * RTYPEDDATA_TYPE(VALUE obj)
Queries for the type of given object.
short rb_num2short(VALUE num)
Converts an instance of rb_cNumeric into C's short.
unsigned short rb_num2ushort(VALUE num)
Converts an instance of rb_cNumeric into C's unsigned short.
short rb_fix2short(VALUE num)
Identical to rb_num2short().
unsigned short rb_fix2ushort(VALUE num)
Identical to rb_num2ushort().
static short rb_num2short_inline(VALUE x)
Identical to rb_num2short().
static bool RB_STATIC_SYM_P(VALUE obj)
Checks if the given object is a static symbol.
static bool RB_TEST(VALUE obj)
Emulates Ruby's "if" statement.
static bool RB_FIXNUM_P(VALUE obj)
Checks if the given object is a so-called Fixnum.
static bool RB_IMMEDIATE_P(VALUE obj)
Checks if the given object is an immediate i.e.
static bool RB_SPECIAL_CONST_P(VALUE obj)
Checks if the given object is of enum ruby_special_consts.
static VALUE rb_special_const_p(VALUE obj)
Identical to RB_SPECIAL_CONST_P, except it returns a VALUE.
@ RUBY_SPECIAL_SHIFT
Least significant 8 bits are reserved.
@ RUBY_FIXNUM_FLAG
Flag to denote a fixnum.
@ RUBY_FLONUM_MASK
Bit mask detecting a flonum.
@ RUBY_FLONUM_FLAG
Flag to denote a flonum.
@ RUBY_Qundef
Represents so-called undef.
@ RUBY_SYMBOL_FLAG
Flag to denote a static symbol.
@ RUBY_IMMEDIATE_MASK
Bit mask detecting special consts.
static bool RB_NIL_P(VALUE obj)
Checks if the given object is nil.
static bool RB_FLONUM_P(VALUE obj)
Checks if the given object is a so-called Flonum.
static VALUE RB_ST2FIX(st_data_t i)
Converts a C's st_data_t into an instance of rb_cInteger.
const VALUE ary[RARRAY_EMBED_LEN_MAX]
Embedded elements.
struct RBasic basic
Basic part, including flags and class.
const VALUE shared_root
Parent of the array.
long capa
Capacity of *ptr.
long len
Number of elements of the array.
const VALUE * ptr
Pointer to the C array that holds the elements of the array.
Ruby's object's, base components.
const VALUE klass
Class of an object.
VALUE flags
Per-object flags.
RUBY_DATA_FUNC dfree
This function is called when the object is no longer used.
void * data
Pointer to the actual C level struct that you want to wrap.
RUBY_DATA_FUNC dmark
This function is called when the object is experiencing GC marks.
struct RBasic basic
Basic part, including flags and class.
struct RBasic basic
Basic part, including flags and class.
struct rb_io_t * fptr
IO's specific fields.
struct st_table * iv_index_tbl
This is a table that holds instance variable name to index mapping.
struct RBasic basic
Basic part, including flags and class.
VALUE * ivptr
Pointer to a C array that holds instance variables.
uint32_t numiv
Number of instance variables.
VALUE ary[ROBJECT_EMBED_LEN_MAX]
Embedded instance variables.
Ruby's regular expression.
struct RBasic basic
Basic part, including flags and class.
const VALUE src
Source code of this expression.
struct re_pattern_buffer * ptr
The pattern buffer.
unsigned long usecnt
Reference count.
struct RBasic basic
Basic part, including flags and class.
long capa
Capacity of *ptr.
long len
Length of the string, not including terminating NUL character.
VALUE shared
Parent of the string.
char * ptr
Pointer to the contents of the string.
const rb_data_type_t * type
This field stores various information about how Ruby should handle a data.
VALUE typed_flag
This has to be always 1.
void * data
Pointer to the actual C level struct that you want to wrap.
struct RBasic basic
The part that all ruby objects have in common.
This is the struct that holds necessary info for a struct.
size_t(* dsize)(const void *)
This function is to query the size of the underlying memory regions.
RUBY_DATA_FUNC dfree
This function is called when the object is no longer used.
void * data
Type-specific static data.
void * reserved[1]
This field is reserved for future extension.
RUBY_DATA_FUNC dcompact
This function is called when the object is relocated.
RUBY_DATA_FUNC dmark
This function is called when the object is experiencing GC marks.
const char * wrap_struct_name
Name of structs of this kind.
VALUE flags
Type-specific behavioural characteristics.
const rb_data_type_t * parent
Parent of this class.
Ruby's IO, metadata and buffers.
This is an implementation detail of rbimpl_size_mul_overflow().
uintptr_t VALUE
Type that represents a Ruby object.
static enum ruby_value_type rb_type(VALUE obj)
Identical to RB_BUILTIN_TYPE(), except it can also accept special constants.
static enum ruby_value_type RB_BUILTIN_TYPE(VALUE obj)
Queries the type of the object.
static bool RB_FLOAT_TYPE_P(VALUE obj)
Queries if the object is an instance of rb_cFloat.
static bool RB_SYMBOL_P(VALUE obj)
Queries if the object is an instance of rb_cSymbol.
static void Check_Type(VALUE v, enum ruby_value_type t)
Identical to RB_TYPE_P(), except it raises exceptions on predication failure.
static bool rb_integer_type_p(VALUE obj)
Queries if the object is an instance of rb_cInteger.
static bool RB_DYNAMIC_SYM_P(VALUE obj)
Queries if the object is a dynamic symbol.
static bool RB_TYPE_P(VALUE obj, enum ruby_value_type t)
Queries if the given object is of given type.
@ RUBY_T_ICLASS
Hidden classes known as IClasses.
@ RUBY_T_FIXNUM
Integers formerly known as Fixnums.
@ RUBY_T_MASK
Bitmask of ruby_value_type.
@ RUBY_T_NONE
Non-object (swept etc.)
void * ruby_xrealloc(void *ptr, size_t newsiz)
Resize the storage instance.
void * ruby_xrealloc2(void *ptr, size_t newelems, size_t newsiz)
Identical to ruby_xrealloc(), except it resizes the given storage instance to newelems * newsiz bytes...
void ruby_xfree(void *ptr)
Deallocates a storage instance.
void * ruby_xmalloc2(size_t nelems, size_t elemsiz)
Identical to ruby_xmalloc(), except it allocates nelems * elemsiz bytes.
void * ruby_xmalloc(size_t size)
Allocates a storage instance.
void * ruby_xcalloc(size_t nelems, size_t elemsiz)
Identical to ruby_xmalloc2(), except it returns a zero-filled storage instance.